본 강의를 수강 후 정리한 글입니다 .
https://www.youtube.com/playlist?list=PLlCujDgOz8x6nDWtRr5AlHWB9Xp-Lxf-z
1. 그룹함수 - 구문
- 구문 (SUM, AVG, MAX, MIN, COUNT, STDDEV, VARIANCE)
SELECT group_function(expr)
FROM tables ;
👉테이블로 부터 전체의 값을 불러들인 후 함수의 값을 구하고 결과는 한건만 출력됨.
👉테이블에 값이 없다면 COUNT = 0 / 나머지는 NULL 출력
SELECT group_function(expr)
FROM tables ;
WHERE conditions ;
👉 조건을 만족시키는 데이터를 불러들인 후 함수의 값을 구하고 결과는 한건만.
👉 값이 없다면 COUNT = 0 / 나머지는 NULL 출력
SELECT c1, c2, c3, ... ,group_function(expr)
FROM tables ;
WHERE conditions
GROUP BY c1, c2, c3 ... ;
👉 각 그룹별로 하나씩 출력
👉 값이 없다면 COUNT = 0 / 나머지는 NULL 출력
SELECT c1, c2, c3, ... ,group_function(expr)
FROM tables ;
WHERE conditions
GROUP BY c1, c2, c3 ...
HAVING conditions ;
👉 그룹별 조건에 맞는 함수 출력
👉 GROUP BY 이후 HAVING으로 데이터 수를 더 줄임
👉 GROUP BY 에 들어가지 않는 항목이 HAVING에 들어가면 에러!
2. 그룹함수 - 종류
- group_function([DISTINCT] expr) <- NULL은 제외함 / 중복된 값 제거 시 DISTINCT사용
- SUM (expr) : 합계
- AVG(expr) : 평균
- MAX(expr) : 최대
- MIN(expr) : 최소
- COUNT(expr) : 갯수
- COUNT(*) : 전체 갯수
- STDDEV(expr) : 표준편자
- VARIANCE(expr) : 분산
=> 읽어들인 ROW 들의 수를 줄임!
ROLLUP
- 소그룹 간의 합계를 계산하는 함수, GROUP BY로 묶은 각각의 소그룹 합계와 전체 합계를 모두 구할 수 있음
- GROUP BY절에 명시한 모든 컬럼에 대한 소그룹의 합계를 구해주는 것이 아니고 맨 처음 명시한 컬럼에 대해서만 소그룹 합계를 구해줌
- ROLLUP ( c1, c2 ) : c1 과 c2 의 합계 / c1 / ( )
- ROLLUP ( (c1, c2), c3 ) : 괄호안에 있는 것을 하나의 컬럼으로 가정
- ROLLUP ( c1, c2, c3 ) : c1과 c2과 c3 의 합계 / c1 과 c2 의 합계 / c1 / ( )
GROUP BY ROLLUP(컬럼1, 컬럼2)
=
GROUP BY 컬럼1, 컬럼2
UNION ALL
GROUP BY 컬럼1
UNION ALL
모든 집합 그룹 결과
CUBE
- 항목들 간의 다차원적인 소계
- ROLLUP과 달리 GROUP BY절에 명시한 모든 컬럼에 대해 소그룹 합계를 계산
- CUBE ( c1, c2 ) : c1 과 c2 의 합계 / c1 / c2 / ( )
- CUBE ( (c1, c2), c3 ) : c1 과 c2과 c3 의 합계 / c1 과 c2 의 합계 / c3 / ( )
- CUBE ( c1, c2, c3 ) : c1 과 c2과 c3 의 합계 / c1 과 c2 의 합계 / c1 / c2 과 c3 의 합계 / c2 / c3 / ()
GROUP BY CUBE(컬럼1, 컬럼2)
=
GROUP BY 컬럼1, 컬럼2
UNION ALL
GROUP BY 컬럼1
UNION ALL
GROUP BY 컬럼2
UNION ALL
모든 집합 그룹 결과
GROUPING SETS
- 다양한 GROUP BY처리를 할 수 있음
- ROLLUP 및 CUBE로 구현하는 것을 모두 할 수 있음.
- GROUPING SETS 절에 지정된 모든 그룹을 계싼하고, 각 그룹의 결과를 UNION ALL로 조작하는 것과 유사
ORDER BY
- 읽어들인 데이터를 정렬하기 위해서 사용
- 맨 마지막에 작성/실행
- 기술하지 않으면 기본적으로 오름차순 / 하나의 칼럼에 대해 둘 중 하나
- 컬럼의 이름이 아닌 위치 또는 Alias를 사용할 수 있다.
- Scalar 서브 쿼리도 사용할 수 있다.
'😺Data Base > 😻 SQLD' 카테고리의 다른 글
[SQL] JOIN (0) | 2022.11.04 |
---|---|
[SQL] 단일 행 함수 (0) | 2022.11.03 |
[SQL] WHERE 절 (0) | 2022.11.02 |
[SQL] SQL 종류 - DML / TCL / DCL / TRANSACTION (0) | 2022.11.02 |
[SQL] 제약조건 / VIEW / SEQUENCE / SYNONYM / INDEX (0) | 2022.11.01 |