# GROUP BY
특정 데이터로 집계하고 싶은 경우 GROUP BY
를 사용합니다
일반적으로 WHERE 문 아래에 위치하며, 집계한 컬럼을 SELECT 절에도 작성해줘야 합니다. 여러 컬럼을 GROUP BY 할 수 있습니다
- 문법 : GROUP BY 집계할-컬럼
# 집계
집계는 특정 값 기준으로 데이터를 묶는 것을 의미합니다
예를 들어 아래와 같이 데이터가 존재한다고 가정하겠습니다.
user_id | event | date_kr |
---|---|---|
1 | signup | 2021-04-01 |
2 | signup | 2021-04-01 |
3 | page_view | 2021-04-02 |
위 데이터를 일자별(date_kr)로 집계하면서 user_id 갯수를 COUNT합니다
SELECT
date_kr,
COUNT(user_id) AS cnt
FROM
event_log
ORDER BY
date_kr
결과는 다음과 같습니다
date_kr | cnt |
---|---|
2021-04-01 | 2 |
2021-04-02 | 1 |
TIP
GROUP BY에 오는 컬럼은 SELECT 절에 집계 함수 외에 컬럼을 작성해주시면 됩니다
아래 예시에서 col_a, col_b를 선택하며 COUNT(col_a)하므로, GROUP BY에도 col_a, col_b를 명시합니다
SELECT
col_a,
col_b,
COUNT(col_a) AS col_a_cnt
FROM Table
GROUP BY
col_a,
col_b
SELECT에서 집계할 컬럼을 입력하지 않는 경우 어떤 일이 발생하는지 쿼리를 실행해서 확인해보시는 것을 추천합니다
SELECT
COUNT(col_a) AS col_a_cnt
FROM Table
GROUP BY
col_a, col_b
# 집계 함수
- Aggregation Function
GROUP BY는 보통 집계 함수와 같이 사용합니다
집계 함수는 다양한 함수가 존재합니다. 특정 데이터를 기준으로 데이터를 모읍니다.
- COUNT : 특정 데이터를 기준으로 데이터가 몇 개 있는지 세고 싶은 경우
- COUNTIF : 특정 조건만 COUNT하는 경우
- AVG : 평균 값을 구하는 경우
- SUM : 값을 더하는 경우
- MAX : 최대값 구하기
- MIN : 최소값 구하기
그 외의 집계 함수는 링크 (opens new window)에서 확인할 수 있습니다
TIP
집계 함수를 사용하지 않고 중복을 제거할 경우에도 GROUP BY를 사용할 수 있습니다. 또는 DISTINCT를 사용할 수도 있습니다
# GROUP BY의 위치
- GROUP BY는 보통 WHERE 아래에 위치합니다. WHERE 절이 없는 경우 FROM 아래에 위치합니다
SELECT
col1,
COUNT(col1) AS col1_cnt
FROM Table
WHERE <조건문>
GROUP BY
col1