[DATABASE] 그룹함수I [ROLLUP/CUBE/GROUPING SETS/LISTAGG]
@욕심쟁이
·2020. 11. 18. 09:43
반응형
그룹합수란?
- 그룹 함수는 검색된 여러 행을 이용하여 통계정보를 계산하는 함수이다.
- 기존 그룹함수 GROUP BY절 과 HAVING절 (참고 sseozzzy.tistory.com/71)
SELECT department_id, job_id, COUNT(*), SUM(salary)
FROM employees
WHERE department_id > 50
GROUP BY department_id, job_id;
ROLLUP
- 그룹 묶는 기준 컬럼이 여러 개인 경우 생성되는 그룹의 상위 레벨의 그룹을 생성하여 결과를 출력.
SELECT department_id, job_id, COUNT(*), SUM(salary)
FROM employees
WHERE department_id > 50
GROUP BY ROLLUP(department_id, job_id);
CUBE
- GROUP BY에 사용된 그룹 묶는 기준 컬럼들의 모든 조합으로 그룹을 만들어 결과를 생성해주는 함수
SELECT department_id, job_id, COUNT(*), SUM(salary)
FROM employees
WHERE department_id > 50
GROUP BY CUBE(department_id, job_id);
GROUPING SETS
- 다양한 기준으로 그룹을 묶고 싶은 경우 GROUPING SETS를 사용하면 한번에 구현이 가능.
GROUPING SETS에 사용된 컬럼들은 개별 컬럼별로 그룹을 묶어서 결과를 출력해준다.
SELECT department_id, manager_id, COUNT(*)
FROM employees
WHERE department_id > 90
GROUP BY GROUPING SETS(department_id, manager_id);
LISTAGG
- 그룹에 속한 행들의 리스트 값을 하나의 컬럼에 합쳐서 출력해주는 함수.
SELECT department_id, LISTAGG(last_name, ', ') WITHIN GROUP(ORDER BY hire_date) "last_name"
FROM employees
WHERE department_id > 80
GROUP BY department_id;
반응형
'IT > DB' 카테고리의 다른 글
[DATABASE] IN/SOME/ANY/ALL/EXISTS 함수 (0) | 2020.11.18 |
---|---|
[DATABASE] DML - MERGE 함수 (0) | 2020.11.18 |
[DATABASE] CASE / DECODE / 조건 선택문 (0) | 2020.11.11 |
[DATABASE] 집합연산자란? (0) | 2020.11.11 |
[DB] Mac에서 Mysql : mysql-u root -p가 안될때 (0) | 2020.09.26 |