티스토리 뷰

집계함수

이름 의미
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);

 

최근에 올라온 글
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Total
Today
Yesterday