집계함수는 group by랑 연동해서 작업이 이루어진다
aggregation function
그룹바이와 집계함수는 연동된다!
그룹별로 최저값, 최대값, 평균값 등 그룹별로 작업을 하는데
전체합계도 구하고, 동시에 그룹별 합계도 구하고 싶다! ?
합계뿐만 아니라 집계를 같이 구하고싶다!
전체 행들에 대한 집계와 그룹별로의 집계! 를 구하고 싶은 경우에 어떻게 해야 할까 ?
전체에 대해 집계를 돌리고 그룹별로 집계를 돌리고싶다.
그룹별 집계는 '소계' 라고 한다.
전체집계와 (소그룹의집계)소계를 같이 구하고싶다!
한번에 구하고싶다?
그럴때는 ?
1) ROLLUP 함수
GROUP BY ROLLUP(A) : 전체합계, 칼럼A소계
GROUP BY ROLLUP(A,B) : 전체합계, 칼럼A소계, 칼럼A,B조합 소계
GROUP BY ROLLUP(A,B,C) : 전체합계, 칼럼A소계, 칼럼A,B조합 소계,칼럼A,B,C조합 소계
GROUP BY ROLLUP(A, (B,C)) : 전체합계, 칼럼A소계, 칼럼A,(B,C)조합의 소계
2) CUBE 함수
* 가능한 모든조합의 소계 및 합계를 생산하기 때문에 시스템에 무리가 갈 수 있다.
GROUP BY CUBE(A) : 전체합계, 칼럼A소계 (2가지)
GROUP BY CUBE(A,B) : 전체합계, 칼럼A소계, 칼럼B소계, 칼럼A,B 조합 소계 (4가지)
3) GROUPING SETS 함수
GROUP BY GROUPING SETS(A) : 칼럼A소계
GROUP BY GROUPING SETS(A,B) : 칼럼A소계, 칼럼B소계
GROUP BY GROUPING SETS( (A,B) ) : 칼럼A와B 조합의 소계
* GROUP BY ROLLUP(A,B) 를 GROUPING SETS함수로 변경하면?
=>
GROUP BY GROUPING SETS( ( ), A, (A,B) )