반응형
2022.05.03 - [IT/SQLP] - [SQL 기초강의] 6강. 데이터 형변환
SQL문의 Group by, HAVING, ROLLUP, CUBE, GROUPING SETS 에 대해서 알아보기
- SQL에서 데이터를 그룹 별로 추출하고 싶을 때 사용하는 예약어
* SYNTAX
SELECT column_name [, aggregate_column_name]
FROM table_name
WHERE condition
GROUP BY [ROLLUP | CUBE | GROUPING SETS ] group_by_expression
HAVING filter_expression
* 그룹함수
Function | 예 제 | 설 명 |
AVG | AVG(salary) | salary의 평균 |
MAX | MAX(salary) | salary의 최대값 |
MIN | MIN(salary) | salary의 최소값 |
SUM | SUM(salary) | salary의 합 |
COUNT | COUNT(comm_pct) COUNT(*) |
Comm_pct가 not null인 개수 전체 Row의 개수 |
* 사용 방법
1. GROUP BY
SELECT CUST_NO, COUNT(*) ORD_CNT
FROM TB_ORD
GROUP BY CUST_NO
-
GROUP BY절은 집합의 집계된 결과를 출력할 때 사용함
-
WHERE절과 ORDER BY 절 사이에 위치
2. HAVING
SELECT CUST_NO, COUNT(*) ORD_CNT
FROM TB_ORD
GROUP BY CUST_NO
HAVING COUNT(*) > 2
- HAVING절은 집계된 결과를 FILTER할 때 사용함
- GROUP BY된 결과 중 그룹함수 관련 조건(HAVING)에 맞는 결과만 조회
- 위 예제에는 주문 건 중 2건 이상을 주문한 고객번호와 주문건수를 조회하는 SQL
3. ROLLUP
SELECT CUST_NO
, SUBSTR(ORD_DTTM,1,6) ORD_DTTM
, SUM(TOT_ORD_AMT) SUM_ORD_AMT
FROM TB_ORD A
WHERE ORD_DTTM LIKE '201901%'
AND CUST_NO IS NOT NULL
GROUP BY ROLLUP(CUST_NO, SUBSTR(ORD_DTTM,1,6))
ORDER BY CUST_NO;
-
ROLLUP은 집계된 집합의 소계와 총계를 확인 할 때 사용함
-
명시한 표현식 수와 순서에 따라 집계한 결과가 반환 됨(n + 1 Level) – 오른쪽에서 왼쪽 순
-
위 예제에는 ‘2019년 01월’ 고객 주문금액의 집계,고객별 소계,총계 값을 확인하는 SQL
4. CUBE
SELECT CUST_NO
, SUBSTR(ORD_DTTM,1,6) ORD_DTTM
, SUM(TOT_ORD_AMT) SUM_ORD_AMT
FROM TB_ORD A
WHERE ORD_DTTM LIKE '201901%'
AND CUST_NO IS NOT NULL
GROUP BY CUBE(CUST_NO, SUBSTR(ORD_DTTM,1,6))
ORDER BY CUST_NO;
-
CUBE는 ROLLUP과 유사하나 2의 n 제곱 값 만큼 반환 함
-
명시한 표현식 수와 순서에 따라 집계한 결과가 반환 됨(n + 1 Level)
-
위 예제에는 ‘2019년 01월’ 고객 주문금액의 집계,고객별 소계,’2019년 01월’ 소계,총계 값을 확인하는 SQL
5. GROUPING SETS
SELECT CUST_NO
, SUBSTR(ORD_DTTM,1,6) ORD_DTTM
, SUM(TOT_ORD_AMT) SUM_ORD_AMT
FROM TB_ORD A
WHERE ORD_DTTM LIKE '201901%'
AND CUST_NO IS NOT NULL
GROUP BY GROUPING SETS(CUST_NO, SUBSTR(ORD_DTTM,1,6))
ORDER BY CUST_NO;
-
GROUPING SETS는 그룹 쿼리이기는 하나 UNION ALL기능이 섞여 있음
-
GROUP BY expression UNION ALL GROUP BY expression의 결과와 같음
-
위 예제에는 ‘2019년 01월'고객별 주문 금액과 ‘2019년 01월‘ 주문 소계 값을 출력
2022.04.05 - [IT/SQLP] - [SQLP] 문제집 풀이 ( 1-3 )
반응형
'IT > SQLP' 카테고리의 다른 글
[SQLD / SQLP] 기출문제 질문 모음2 (0) | 2022.05.24 |
---|---|
[SQLD] 기출문제 질문 모음 (0) | 2022.05.23 |
[SQL 기초강의] 6강. 데이터 형변환 (0) | 2022.05.03 |
[SQLP] 실전 대비 문제 (1장 데이터모델링, sql 활용) (0) | 2022.05.01 |
[SQL 기초강의] 5강. SQL 함수 (Function) (0) | 2022.04.26 |
댓글