CASE를 활용한 COUNT
Coddy SQL 여정의 심화 과정 섹션에 포함된 레슨. 27개 중 12번째.
집계 함수 안에 CASE 표현식을 넣을 수 있습니다. 핵심은 COUNT가 NULL을 무시한다는 점입니다. 따라서 ELSE가 없는 CASE는 조건과 일치하는 행만 계산합니다.
SELECT
COUNT(*) AS total,
COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM users이제 active_count는 전체 쿼리를 필터링하지 않았는데도 'active' 행의 개수입니다. 이것이 여러분이 작성하게 될 모든 다중 지표 대시보드 쿼리의 핵심 요령입니다.
챌린지
쉬움사용 가능한 테이블 및 열:
orders:id,customer_id,status
각 customer_id에 대해 다음을 반환하세요:
customer_idtotal: 해당 고객이 주문한 총 주문 수shipped:status = 'shipped'인 항목의 수cancelled:status = 'cancelled'인 항목의 수
취소된 주문이 하나 이상 있는 고객만 반환하세요. customer_id순으로 정렬하세요.
직접 해보기
SELECT customer_id,
COUNT(*) AS total,
-- shipped, cancelled를 COUNT(CASE ...)로 처리
FROM orders
GROUP BY customer_id
-- 최소 한 번 이상 취소한 고객으로 필터링
ORDER BY customer_id
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
심화 과정의 모든 레슨
직접 연습해 보세요: SQL 플레이그라운드