Data, English, Travel

[CRM 마케터의 SQL] SUM/MAX Case When 차이 (PV 집계 vs UV 집계) 본문

Data/SQL

[CRM 마케터의 SQL] SUM/MAX Case When 차이 (PV 집계 vs UV 집계)

J._.haza 2025. 2. 27. 00:55

취준 시절 SQL을 공부하면서 가장 궁금했던 것 중 하나는 "CRM 마케터" 직무에서 자주 쓰는 SQL은 무엇인지 궁금했던 것 같다. 작년 입사 후 1년간 신입 CRM 마케터로 일하면서 자주 사용했던 SQL 쿼리들을 [CRM 마케터의 SQL] 시리즈로 연재해볼까 한다.

*이 시리즈는 필자가 실무에서 자주 사용하는 SQL 쿼리들을 ChatGPT 데이터로 임의로 구현한 내용입니다. 기업마다 사내 실험/분석 환경 및 직무 R&R에 따라 본 내용을 마케터가 수작업으로 하지 않아도 될 수 있습니다. (하지만 저는 최첨단 수동화 기법을 사용합니다...)


SUM(CASE WHEN ...) 구문과 MAX(CASE WHEN ...) 구문은 각각 집계 함수이다.

SQL에서는 데이터를 피봇 할 때 위 두 구문을 주로 활용한다. 다만 둘은 서로 뭐가 다른 걸까?

 

이 함수들은 특정 조건에 맞는 값을 합산하거나 최대값을 추출하는데, 결과를 처리하는 방식에서 차이가 있다.

 

1. SUM(CASE WHEN ...)

  • 조건에 해당하는 값들을 모두 더한다.
  • 주로 숫자 데이터를 다룰 때 사용된다.
  • 조건을 만족하지 않으면 0으로 처리되어 결과에 영향을 주지 않는다.

예시: 클릭 수 합산

SELECT
    user_id,
    SUM(CASE WHEN label = 'click' THEN 1 ELSE 0 END) AS total_clicks
FROM
    your_table
GROUP BY
    user_id;
  • label = 'click'일 때 1을 더하고, 아닐 때는 0을 더한다.
  • 사용자별 총 클릭 수를 계산합니다.

2. MAX(CASE WHEN ...)

  • 조건에 해당하는 값들 중 최대값을 반환한다.
  • 주로 특정 기준의 최대값이나 플래그 값을 확인할 때 사용된다.(특정 액션의 여부 확인 등)

예시: 클릭 여부 확인

SELECT
    user_id,
    MAX(CASE WHEN label = 'click' THEN 1 ELSE 0 END) AS has_click
FROM
    your_table
GROUP BY
    user_id;
  • label = 'click'이면 1, 아니면 0
  • 'click'이 하나라도 있으면 결과는 1, 없으면 0
  • 즉, 사용자가 한 번이라도 클릭했는지 여부를 확인하는 데 적합

차이점 요약

SUM CASE WHEN 과 MAS CASE WHEN 차이 요약


응용 예시 1

사용자의 클릭 여부와 클릭 횟수 집계하기

SELECT
    user_id,
    SUM(CASE WHEN label = 'click' THEN 1 ELSE 0 END) AS total_clicks,
    MAX(CASE WHEN label = 'click' THEN 1 ELSE 0 END) AS has_click
FROM
    your_table
GROUP BY
    user_id;
  • total_clicks: 사용자의 클릭 수
  • has_click: 한 번이라도 클릭했는지 여부 (1이면 클릭 있음, 0이면 클릭 없음)

 

응용 예시 2

사용자의 방문 여부와 방문 횟수 집계하기

 

특정 페이지의 방문자수(Unique Visitor)와 방문 횟수(Page view)를 한번에 집계하고 싶다면 어떻게 해야할까?

 

원천 테이블이 로그로 쌓여있다는 가정 하에, 유저별로 먼저 PV(Page view)횟수를 sum case when를 통해 계산하고, UV(Unique Visitor)를 max case when으로 유저별로 방문 여부를 집계한 뒤 플래그 값(1)을 가진 유저만 count distinct 한다.