집계 함수와 GROUP BY

dorongpark·2024년 6월 24일
0

해커랭크(sql)

목록 보기
10/23

포인트

  • GROUP BY 쓰는 이유
  • 집계 함수와 GROUP BY 예시
  • (심화) GROUP BY + rollup, cube

1. group by 쓰는 이유

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


2. (심화) GROUP BY + rollup, cube

  • 기본 구조
    select 컬럼1, 컬럼2, 집계 함수
    from
    group by rollup/cube (컬럼1, 컬럼2)
SELECT 날짜, 장난감 종류, SUM(판매량) AS 총판매량
FROM 판매데이터
GROUP BY ROLLUP(날짜, 장난감 종류);

① 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

profile
야 너도 분석 할수 있어

0개의 댓글