Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- mysql설치 #mysql #mysqluser #mysqlworkbench
- 역설구조
- 비즈니스모델
- allra
- 그로스해킹
- 셀프스토리지
- activation
- 서말리포켓
- 올라
- retention
- 활성화
- 데이터분석
- BM분석
- 선정산서비스
- aarrr
- pmf
- CAC
- 머신러닝
- 한장으로끝내는비즈니스모델100
- 퍼널분석
- model_selection
- 리텐션
- sklearn
- fundbox
- 전환율
- 팔방이익구조
- 핀테크
- 인게이지먼트
- 코호트
- 바로팜
Archives
- Today
- Total
데이터로그😎
[SQL기본] GROUP BY, GROUPING 본문
GROUP BY ~ WITH ROLLUP
group by 시 옆에 with rollup을 붙이게 되면 group by를 한 섹션 별로 소계가 생기게 된다.
만약 group by에 한 컬럼만 썼다면? 총계가 나옵니다.
SELECT CountryCode, Sum(population)
FROM world.city
GROUP BY CountryCode WITH ROLLUP;
그러나, 여기서 궁금한 점!
만약 값 자체가 NULL인 것들과 GROUP BY ~ WITH ROLLUP으로 인해 총계 옆에 NULL이라고 나오는 것들을 어떻게 구분하지??
이를 위해 GROUPING 함수가 나왔다고 한다.
GROUPING
- GROUPING 함수는 그 인자를 그루핑 기준에서 고려하지 않은 부분 , 즉 총계나 소계인 경우에는 1을, 그 외는 0을 리턴한다.
- 아래 표를 살펴보면 Continent를 기준으로 roll up된 row는 GROUPING(Continent)열에 1값이 들어있고, Name을 기준으로 roll up된 row는 GROUPING(Name)컬럼에 1이 기재되어 있다.
- 이 표는 GROUPING(Name)을 기준으로 내림차순 된 표이니 헷갈릴 수 있다. 다음을 살펴보
SELECT Continent, Name, sum(SurfaceArea), GROUPING(Continent), GROUPING(Name)
FROM world.country
GROUP BY Continent, Name WITH ROLLUP;
- Continent가 Asia일 때만 보면 GROUPING(Name) 컬럼의 차이점이 잘 보인다.
- GROUPING(Name) = 1이란 뜻은 해당 열을 집계했을 때 Name을 모두 sum()했다는 뜻이다.
'# 1. 언어 > # 1.1. SQL' 카테고리의 다른 글
[SQL기본] 윈도우 함수: Lead, Lag() (1) | 2023.11.26 |
---|---|
[SQL기본] 윈도우 함수: RANK() OVER() (0) | 2023.11.24 |
[SQL기본] 문자열 처리: REPLACE, SUBSTR, LPAD, TRIM (0) | 2023.09.08 |
[SQL기본] NULL vs 공백 / NULL 대체 (0) | 2023.09.08 |
[SQL기본] 윈도우 함수 (0) | 2023.09.06 |