Oracle-グループ(GROUP BY、HAVING)
グループ関数
データ全体から統計結果を取得する
1行または複数行をグループ化して、合計および平均値などの結果を求めます.
グループ関数タイプ
-NULL値を含まない
SELECT sum(sal), # 합계
avg(sal), # 평균
max(sal), # 최대값
min(sal), # 최소값
stddev(sal), # 표준편차
variance(sal) # 분산
FROM emp;
->
SUM(SAL) AVG(SAL) MAX(SAL) MIN(SAL) STDDEV(SAL) VARIANCE(SAL)
---------- ---------- ---------- ---------- ----------- -------------
25335 2111.25 5000 950 1186.23569 1407155.11
-戻りテーブルのロー数
* NULL 값을 제외하고 개수를 셈 - COUNT(특정칼럼명)
SELECT count(comm)
FROM emp;
->
COUNT(COMM)
-----------
4
* NULL 값을 포함하고 개수를 셈 - COUNT(*)
SELECT count(*)
FROM emp;
->
COUNT(*)
----------
12
GROUP BYセクション
必要なグループにデータをグループ化
特定の列に基づいてグループ化する必要があります
特定の列に基づいて和を求めるために使用される(sum、avg、countなど)
SELECTセクションでグループ化されていない関数の列を使用すると、グループ化された結果とグループ化されていない結果との数の違いにより、一致できなくなり、エラーが発生します.
形式
SELECT 컬럼명, 그룹함수
FROM 테이블명
WHERE 조건 (연산자)
GROUP BY 칼럼명;
SELECT DEPTNO, JOB, COUNT(*), SUM(SAL)
FROM EMP
GROUP BY DEPTNO, JOB; # DEPTNO와 JOB을 그룹으로 묶음
->
DEPTNO JOB COUNT(*) SUM(SAL)
---------- ------------------ ---------- ----------
20 CLERK 1 1210
30 SALESMAN 4 5600
20 MANAGER 1 2975
30 CLERK 1 950
10 PRESIDENT 1 5000
30 MANAGER 1 2850
10 CLERK 1 1300
10 MANAGER 1 2450
20 ANALYST 1 3000
# DEPTNO와 JOB을 기준으로 하나의 그룹으로 만들어 해당 그룹의 집계(COUNT, SUM)를 계산해서 출력
HAVING節
GROUP BYを使用してグループを作成し、HAVINGを使用してグループの結果を自動的に制限できます.
WHEREセクションなどの条件をグループに追加
出力条件がTrueの結果のみ
SELECT DEPTNO, JOB, COUNT(*), SUM(SAL)
FROM EMP
GROUP BY DEPTNO, JOB
HAVING MAX(SAL) >= 3000; # 그룹으로 나눈 값에서 SAL의 가장 큰 값이 3000이상인 데이터만 출력
->
DEPTNO JOB COUNT(*) SUM(SAL)
---------- ------------------ ---------- ----------
10 PRESIDENT 1 5000
20 ANALYST 1 3000
**を参照Reference
この問題について(Oracle-グループ(GROUP BY、HAVING)), 我々は、より多くの情報をここで見つけました https://velog.io/@dgk089/Oracle-그룹GROUP-BY-HAVINGテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol