Menu
Coddy logo textTech

CASE를 활용한 SUM

Coddy SQL 여정의 심화 과정 섹션에 포함된 레슨 — 27개 중 13번째.

동일한 아이디어가 SUM에도 적용되며, 이는 훨씬 더 유연합니다. CASE는 일치하는 행에 대해 1을 반환하고 그 외의 모든 행에 대해 0을 반환하거나, 행마다 가중치를 다르게 부여하기 위해 임의의 숫자 값을 반환할 수 있습니다.

SELECT
    SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) AS active_count,
    SUM(CASE WHEN plan = 'pro' THEN amount ELSE 0 END) AS pro_revenue
FROM users

SUM(CASE … THEN 1 ELSE 0 END)COUNT(CASE … THEN 1 END)는 개수를 셀 때 동일한 결과를 반환합니다. 팀이 선호하는 스타일을 선택하세요.

challenge icon

챌린지

쉬움

사용 가능한 테이블 및 컬럼:

  • <strong>transactions</strong>: <strong>id</strong>, <strong>category</strong>, <strong>type</strong>, <strong>amount</strong>

type'sale' 또는 'refund' 중 하나입니다. 각 category에 대해 다음을 반환하세요:

  • category
  • net_revenue: 판매 금액의 합계 마이너스 환불 금액의 합계

환불 금액을 음수로 처리하는 단일 SUM(CASE …) 표현식을 사용하여 net_revenue를 계산하세요. net_revenue를 기준으로 내림차순 정렬하세요.

치트 시트

SUMCASE와 함께 사용하여 조건부로 값을 집계하세요. 카운팅을 위해 1/0을 반환하거나 가중 합계를 위해 실제 값을 반환합니다:

SELECT
    SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) AS active_count,
    SUM(CASE WHEN plan = 'pro' THEN amount ELSE 0 END) AS pro_revenue
FROM users

SUM(CASE … THEN 1 ELSE 0 END)COUNT(CASE … THEN 1 END)는 동일한 카운트 결과를 생성합니다.

직접 해보기

SELECT category,
       -- 환불이 음수로 계산되는 하나의 SUM(CASE ...)
FROM transactions
GROUP BY category
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

심화 과정의 모든 레슨