[SQLD] SQL 활용 (2) - 그룹 함수, 윈도우 함수
04 그룹 함수
데이터를 GROUP BY 하여 나타낼 수 있는 데이터를 구하는 함수이다.
ROLLUP
소그룹 간의 소계 및 총계를 계산하는 함수
ROLLUP(A) | A로 그룹핑 총합계 |
ROLLUP(A, B) | A, B로 그룹핑 A로 그룹핑 총합계 |
ROLLUP(A, B, C) | A, B, C로 그룹핑 A, B로 그룹핑 A로 그룹핑 총합계 |
CUBE
소그룹 간의 소계 및 총계를 다차원적으로 계산할 수 있는 함수이다. GROUP BY가 일방향으로 그룹핑하며 소계를 구했다면 CUBE는 조합할 수 있는 모든 그룹에 대한 소계를 집계한다.
CUBE(A) | A로 그룹핑 총합계 |
CUBE(A, B) | A, B로 그룹핑 A로 그룹핑 B로 그룹핑 총합계 |
CUBE(A, B, C) | A, B, C로 그룹핑 A, B로 그룹핑 A, C로 그룹핑 B, C로 그룹핑 A로 그룹핑 B로 그룹핑 C로 그룹핑 총합계 |
GROUPING SETS
특정 항목에 대한 소계를 계산하는 함수이다. 인자값으로 ROLLUP이나 CUBE를 사용할 수도 있다.
GROUPING SETS(A, B) | A로 그룹핑 B로 그룹핑 |
GROUPING SETS(A, B, ( )) | A로 그룹핑 B로 그룹핑 총합계 |
GROUPING SETS(A, ROLLUP(B)) | A로 그룹핑 B로 그룹핑 총합계 |
GROUPING SETS(A, ROLLUP(B, C)) | A로 그룹핑 B, C로 그룹핑 B로 그룹핑 총합계 |
GROUPING SETS(A, B, ROLLUP(C)) | A로 그룹핑 B로 그룹핑 C로 그룹핑 총합계 |
GROUPING
GROUPING 함수는 ROLLUP, CUBE, GROUPING SETS 등과 함께 쓰이며 소계를 나타내는 Row를 구분할 수 있게 해준다. GROUPING 함수를 이용하면 원하는 우치에 원하는 텍스트를 출력할 수 있다.
05 윈도우 함수
OVER 키워드와 함께 사용된다.
순위 함수
①RANK
순위를 매기면서 같은 순위가 존재하면 존재하는 수만큼 다음 순위를 건너뛴다.
②DENSE_RANK
순위를 매기면서 같은 순위가 존재하더라도 다음 순위를 건너뛰지 않고 이어서 매긴다.
③ROW_NUMBER
순위를 매기면서 동일한 값이라도 각기 다른 순위를 부여한다.
집계함수
①SUM
데이터의 합계를 구하는 함수이다.
②MAX
데이터의 최댓값을 구하는 함수이다.
③MIN
데이터의 최솟값을 구하는 함수이다.
④AVG
데이터의 평균값을 구하는 함수이다.
⑤COUNT
데이터의 건수를 구하는 함수이다.
행 순서 함수
①FIRST_VALUE
파티션 별 가장 선두에 위치한 데이터를 구하는 함수이다.
②LAST_VALUE
파티션 별 가장 끝에 위치한 데이터를 구하는 함수이다.
③LAG
파티션 별로 특정 수만큼 앞선 데이터를 구하는 함수이다.
④LEAD
파티션 별 특정 수만큼 뒤에 있는 데이터를 구하는 함수이다.
비율 함수
①RATIO_TO_REPORT
파티션 별 합계에서 차지하는 비율을 구하는 함수이다.
②PERCENT_RANK
해당 파티션의 맨 위 끝 행을 0, 맨 아래 끝 행을 1로 놓고 현재 행이 위치하는 백분위 순위 값을 구하는 함수이다.
③CUME_DIST
해당 파티션에서의 누적 백분율을 구하는 함수이다. 결과값은 0보다 크고 1보다 작거나 같은 값을 가진다.
④NTILE
주어진 수만큼 행들을 n등분한 후 현재 행에 해당하는 등급을 구하는 함수이다.
출처 : 정미나. 「유선배 SQL개발자(SQLD) 과외노트」. (주)시대교육. 2023