티스토리 뷰
DATABASE/이론
[DB] 분석 함수 3 - 다중 행 함수 ( 집계함수 , 그룹함수 ) , GROUP BY , HAVING
printf100 2019. 12. 31. 17:37집계함수
이름 | 의미 |
COUNT | 컬럼의 행 개수 |
SUM | NULL을 제외한 모든 행의 합 |
AVG | NULL을 제외한 모든 행의 평균 |
MAX | NULL을 제외한 최대값 |
MIN | NULL을 제외한 최소값 |
데이터 그룹화
GROUP BY 절
// 부서별 월급 총합을 구하자.
SELECT DEPTNO, SUM(SAL) FROM EMP GROUP BY DEPTNO;
// 직업 별 사원 수를 조회해보자.
SELECT JOB, COUNT(JOB) FROM EMP GROUP BY JOB;
HAVING 절
-
GROUP BY절에 조건을 주고 싶을 때 사용
-
집계함수를 사용해서 조건을 주고 싶을 때 (WHERE절에서는 집계함수를 사용할 수 없기 때문)
// 부서별 월급 합계를 구하자. 단, 월급의 합계가 7000 이상인 부서만 출력하자.
SELECT DEPTNO, SUM(SAL)
FROM EMP
GROUP BY DEPTNO
HAVING SUM(SAL) >= 7000;
그룹함수
이름 | 의미 |
ROLLUP | 순차적으로 중간합계 출력 (순서가 바뀌면 결과도 바뀜) |
CUBE | 모든 중간합계 출력 |
GROUPING SETS | 원하는 결과를 출력하기 위한 세팅 |
ROLLUP
-
SELECT A, B, COUNT(*) FROM TMP GROUP BY ROLLUP(A,B);
=
A, B, COUNT(*)
UNION ALL
A, NULL, COUNT(*)
UNION ALL
NULL, NULL, COUNT(*)
SELECT JOB, DEPTNO, SUM(SAL) FROM EMP GROUP BY ROLLUP(JOB, DEPTNO);
CUBE
-
SELECT A, B, COUNT(*) FROM TMP GROUP BY CUBE(A,B);
=
NULL, NULL, COUNT(*)
UNION ALL
NULL, B, COUNT(*)
UNION ALL
A, NULL, COUNT(*)
UNION ALL
A, B, COUNT(*)
SELECT JOB, DEPTNO, SUM(SAL) FROM EMP GROUP BY CUBE(JOB, DEPTNO);
GROUPING SETS
SELECT JOB, DEPTNO, SUM(SAL)
FROM EMP GROUP BY GROUPING SETS(ROLLUP(JOB,DEPTNO), DEPTNO);
'DATABASE > 이론' 카테고리의 다른 글
[DB] [ORACLE] JOIN - EQUI , NON-EQUI , SELF , INNER , OUTER (0) | 2020.01.02 |
---|---|
[DB] [ORACLE] TOP N QUERY - ROWNUM ( 조회한 결과에 순위 매기기 ) (0) | 2019.12.31 |
[DB] 분석 함수 2 - 날짜 함수 , 변환 함수 , 기타 함수 (0) | 2019.12.31 |
[DB] 분석 함수 1 - DUAL 테이블 , 단일 행 함수 ( 숫자함수 , 문자함수 ) (0) | 2019.12.31 |
[DB] 데이터 무결성 , 제약조건 (0) | 2019.12.10 |