포인트
group by란?
: 특정 컬럼을 기준으로 그룹핑 하여 집계하여 볼 수 있는 명령어
- group by는 특정 컬럼을 기준으로 데이터를 그룹화 할 수 있어 집계 값을 빠르게 요약 할 수 있다
- 카테고리별, 날짜별, 지역별, 부서별 등 원하는 컬럼을 기준으로 집계 요약 가능
[예시]
select sales_date, sum(amount)
from sales
group by sales_date
group by 필터링 할때
- group by 이후 조건을 걸을 때: Having 사용
- 그룹화 한 이후에 데이터를 필터링 할 때 사용
SELECT
sale_date,
SUM(amount) AS total_sales
FROM
sales
GROUP BY
sale_date
HAVING
SUM(amount) > 300
- 기본 구조
select 컬럼1, 컬럼2, 집계 함수
from
group by rollup/cube (컬럼1, 컬럼2)SELECT 날짜, 장난감 종류, SUM(판매량) AS 총판매량 FROM 판매데이터 GROUP BY ROLLUP(날짜, 장난감 종류);
ex) 장난감 종류 별 판매량 데이터 요약
SELECT 날짜, 장난감 종류, SUM(판매량) AS 총판매량
FROM 판매데이터
GROUP BY ROLLUP(날짜, 장난감 종류);
1) 날짜별, 장난감 종류 전체 합계
2) 날짜별 전체 합계 ← rollup(날짜, 장난감 종류) 이므로 날짜에 대한 전체 합계만 구함
3) 총합
[알쓸 신잡]
Q. 집계 함수와 GROUP BY는 함께 쓰여야 하는 것인가?
A. 꼭그렇지만은 않다.
ㄴ 1. 집계 함수는 단독으로 쓸 수 있다
EX.)
SELECT MAX/SUM/AVG...(CITY)
FROM STATION
ㄴ 2. 집계 함수와 GROUP BY가 함께 쓰는 경우는 SELECT 절에 집계 함수를 제외한 컬럼이 있어야 한다
EX.)
SELECT CITY, MIN(CITY)
FROM STATION
GROUP BY CITY (O)
SELECT CITY, MIN(CITY)
FROM STATION
GROUP BY CITY (X) : 집계 함수와 컬럼이 쓰였을 때는 GROUP BY 가 무조건 들어가야 한다
단순 예제 확인
https://docs.google.com/spreadsheets/d/1lHGJXSPQ8XE-13QIFGNMOz2aTyyXJzb0JQVZn1cLf10/edit#gid=0