공부/데이터베이스
[오라클로 배우는 데이터베이스 입문] 07. 다중행 함수와 데이터 그룹화
losey_J
2022. 3. 26. 20:35
1. 하나의 열에 결과를 출력 결과를 담는 다중행 함수
함수 | 설명 |
SUM | 지정한 데이터의 합 변환 |
COUNT | 지정한 데이터의 개수 반환 |
MAX | 지정한 데이터 중 최댓값 반환 |
MIN | 지정한 데이터 중 최솟값 반환 |
AVG | 지정한 데이터의 평균값 반환 |
- 합계를 구하는 SUM 함수
SUM([DISTINCT, ALL 중 하나를 선택하거나 아무 값도 지정하지 않음(선택)] [합계를 구할 열이나 연산자, 함수를 사용한 데이터(필수)]) ※ 분석용도로 사용 시 SUM([DISTINCT, ALL 중 하나를 선택하거나 아무 값도 지정하지 않음(선택)] [합계를 구할 열이나 연산자, 함수를 사용한 데이터(필수)]) OVER(분석을 위한 여러 문법을 지정)(선택) |
- 데이터 개수를 구해 주는 COUNT 함수
COUNT([DISTINCT, ALL 중 하나를 선택하거나 아무 값도 지정하지 않음(선택)] [개수를 구할 열이나 연산자, 함수를 사용한 데이터(필수)]) OVER(분석을 위한 여러 문법을 지정)(선택) ※ *을 사용하면 SELECT문의 결과 값으로 나온 행 데이터의 개수를 반환함 |
- 최댓값과 최솟값을 구하는 MAX, MIN 함수
MAX([DISTINCT, ALL 중 하나를 선택하거나 아무 값도 지정하지 않음(선택)] [최댓값을 구할 열이나 연산자, 함수를 사용한 데이터(필수)]) OVER(분석을 위한 여러 문법을 지정)(선택) MAX([DISTINCT, ALL 중 하나를 선택하거나 아무 값도 지정하지 않음(선택)] [최솟값을 구할 열이나 연산자, 함수를 사용한 데이터(필수)]) OVER(분석을 위한 여러 문법을 지정)(선택) |
- 평균 값을 구하는 AVG함수
AVG([DISTINCT, ALL 중 하나를 선택하거나 아무 값도 지정하지 않음(선택)] [평균을 구할 열이나 연산자, 함수를 사용한 데이터(필수)]) OVER(분석을 위한 여러 문법을 지정)(선택) |
2. 결과 값을 원하는 열로 묶어 출력하는 GROUP BY절
SELECT [조회할 열1 이름], [열2 이름], ... , [열N 이름] FROM [조회할 테이블 이름] WHERE [조회할 행을 선별하는 조건식] GROUP BY [그룹화할 열을 지정(여러개 지정 가능)] --- 특정 열 또는데이터를 기준으로 데이터를 그룹으로 묶음 ORDER BY [정렬하려는 열 지정]; ※ GROUP BY절에 명시하는 열은 여러개 지정 가능 유의점: GROUP BY절에 명시하지 않은 열은 SELECT절에 사용할 수 없음 |
3. GROUP BY절에 조건을 줄 때 사용하는 HAVING절
SELECT [조회할 열1 이름], [열2 이름], ... , [열N 이름] FROM [조회할 테이블 이름] WHERE [조회할 행을 선별하는 조건식] GROUP BY [그룹화할 열을 지정(여러개 지정 가능)] HAVING [출력 그룹을 제한하는 조건식] --- GROUP BY절을 사용해 그룹화된 결과 중 출력 그룹을 선별하는 조건식을 지정 ORDER BY [정렬하려는 열 지정]; 유의점 WHERE절 - 출력 대상 행을 제한 HAVING절 - 그룹화된 대상을 출력에서 제한 |
4. 그룹화와 관련된 여러 함수(실무에는 자주 사용되지 않으므로 참고만 할 것)
- ROLLUP, CUBE 함수: 그룹화 데이터의 합계출력 시 유용
GROUP BY ROLLUP GROUP BY CUBE |
- GROUPING SETS 함수: 같은 수준의 그룹화 열이 여러 개일 때 각 열별 그룹화를 통해 결과 값을 출력
GROUP BY GROUPING SETS[그룹화 열 지정(여러 개 지정가능)]; |
- 그룹화 함수
- GROUPING 함수: 그룹화 대상으로 지정한 열이 그룹화된 상태로 결과가 집계되었는 지 확인하는 데 사용
SELECT [조회할 열1 이름], [열2 이름], ... , [열N이름] GROUPING [GROUP BY절에 ROLLUP 또는 CUBE에 명시한 그룹화 할 열 이름] - 그룹화 대상 열의 그룹화가 이루어진 상태의 집계인지 여부 FROM [조회할 테이블이름] WHERE [조회할 행을 선별하는 조건식] GROUP BY ROLLUP 또는 CUBE [그룹화할 열] |
- GROUPING_ID 함수: 그룹화 여부 검사할 열을 한번에 여러 열 지정
SELECT [조회할 열1 이름], [열2 이름], ... , [열N이름] GROUPING_ID [그룹화 여부 확인할 열(여러 개 지정 가능)] FROM [조회할 테이블이름] WHERE [조회할 행을 선별하는 조건식] GROUP BY ROLLUP 또는 CUBE [그룹화할 열] ※ GROUPING_ID 함수 결과는 그룹화 비트 벡터값으로 나타냄 |
- LISTAGG 함수 : 그룹에 속해 있는 데이터를 가로로 나열할 때 사용
SELECT [조회할 열1 이름], [열2 이름], ... , [열N이름] LISTAGG([나열할 열(필수)], [각 데이터를 구분하는 구분자(선택)])-구분자 지정안할 경우 NULL이 기본값 WITHIIN GROUP(ORDER BY 나열할 열의 정렬 기준 열(선택)) FROM [조회할 테이블이름] WHERE [조회할 행을 선별하는 조건식] |
- PIVOT, UNPIVOT 함수: 기존 테이블 행을 열로 바꿈, 열을 행으로 바꿈