"누가 진짜 VIP인가?" SQL로 1분 만에 고객 등급 산정 시스템 만들기 (CASE WHEN)

2025. 12. 26. 20:52SQL

반응형

쇼핑몰이나 서비스를 운영하다 보면 "모든 고객이 다 똑같지는 않다"는 걸 깨닫게 된다.
파레토의 법칙처럼, 상위 20%의 고객이 매출의 80%를 책임지는 경우가 많기 때문이다.

사장님이 "이번 연말 선물 보낼 VIP 명단 좀 뽑아줘. 기준은 200달러 이상 구매한 사람이야."라고 했을 때,
엑셀로 데이터를 내려받아 IF 함수를 수천 번 복사-붙여넣기 하고 있을 수는 없다.

오늘은 SQL의 조건문인 CASE WHEN을 사용하여, 매출액에 따라 고객에게 

자동으로 등급(VIP, Silver, Bronze)을 부여하는 시스템을 만들어 보았다.

 

1. 누가 얼마 썼는지 확인하기 (GROUP BY 복습)

등급을 매기려면 먼저 고객별로 '총 얼마를 썼는지' 집계해야 한다.
지난 시간에 배운 GROUP BY를 활용해 고객 ID(customer_id)별 매출 합계(SUM)를 구했다.

SELECT customer_id,
       SUM(amount) AS total_spent
FROM payment
GROUP BY customer_id
ORDER BY total_spent DESC;

 

 

1등 고객(148번)은 혼자서 211달러나 썼다. 하지만 이 숫자만으로는 누가 VIP인지 한눈에 안 들어온다. 딱지가 필요하다.

 

 

2. 내 맘대로 등급 매기기 (CASE WHEN) ⭐

 

이제 SQL에게 규칙을 알려줄 차례다. 엑셀의 IF 함수와 비슷하지만, SQL의 CASE WHEN은 훨씬 읽기 쉽고 직관적이다.

🎯 우리 가게 등급 기준
- VIP: 200달러 이상 구매
- Silver: 100달러 이상 구매
- Bronze: 그 외 나머지
SELECT customer_id,
       SUM(amount) AS total_spent,
       CASE
           WHEN SUM(amount) >= 200 THEN 'VIP'
           WHEN SUM(amount) >= 100 THEN 'Silver'
           ELSE 'Bronze'
       END AS customer_grade
FROM payment
GROUP BY customer_id
ORDER BY total_spent DESC;

 

 

쿼리를 실행하자마자 customer_grade라는 새로운 컬럼이 생겼다!
내가 일일이 계산하지 않아도, SQL이 알아서 211달러 쓴 고객에겐 'VIP', 190달러 쓴 고객에겐 'Silver'라는 이름표를 붙여줬다. 감동적이다.

3. 그래서 VIP가 몇 명인데? (서브쿼리 활용)

등급표는 만들었는데, 사장님이 "그래서 VIP가 총 몇 명이야? 예산 짜야 해."라고 묻는다면?
방금 만든 표를 다시 요약해야 한다. 이때 서브쿼리(Subquery)라는 기술을 쓴다.

쉽게 말해, "방금 만든 쿼리 결과를 가상의 테이블로 치고, 다시 한번 GROUP BY를 돌리는 것"이다.

SELECT customer_grade, COUNT(*) AS count
FROM (
    -- 방금 위에서 만든 등급표 쿼리를 여기에 쏙 넣는다!
    SELECT customer_id,
           SUM(amount) AS total_spent,
           CASE
               WHEN SUM(amount) >= 200 THEN 'VIP'
               WHEN SUM(amount) >= 100 THEN 'Silver'
               ELSE 'Bronze'
           END AS customer_grade
    FROM payment
    GROUP BY customer_id
) AS subquery_table
GROUP BY customer_grade
ORDER BY count ASC;

 

 

 

결과가 깔끔하게 나왔다. VIP는 딱 2명뿐이다. (생각보다 적다... 기준을 좀 낮춰야 하나? 🤔)
이렇게 데이터를 근거로 의사결정을 할 수 있게 된 것이 가장 큰 수확이다.

 

 

📝 오늘의 문법 요약 (Cheat Sheet)

데이터에 비즈니스 로직(규칙)을 입히는 핵심 문법이다.

문법 구조 비고
CASE WHEN CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
ELSE 나머지
END
순서대로 조건을 체크함.
엑셀의 IF함수 상위 호환.

 

이제 단순 조회와 집계를 넘어, "데이터를 가공해서 새로운 정보를 창조"하는 단계까지 왔다.
다음 시간에는 흩어져 있는 두 개의 테이블을 하나로 합치는 SQL의 꽃, JOIN에 대해 다뤄볼 예정이다.

 

 

[데이터 분석 독학기 #10 끝]

반응형