[SQL] CASE WHEN 대신 FILTER? 조건 집계를 더 깔끔하게!

Unit·2025년 6월 17일

SQL

목록 보기
21/59

SQL에서 조건별 집계 값을 구할 때, 보통 CASE WHEN을 많이 사용하죠.
하지만 쿼리가 길어지거나, 조건이 반복되면 가독성이 떨어질 수 있어요.
그럴 때 FILTER (WHERE ...) 문법을 쓰면 더 깔끔하게 표현할 수 있습니다.


예시: 성별별 구매 수 구하기

-- ✅ FILTER 사용
SELECT
    COUNT(*) FILTER (WHERE gender = 'M') AS male_users,
    COUNT(*) FILTER (WHERE gender = 'F') AS female_users
FROM users;

위 쿼리는 남성과 여성 유저 수를 한 번에 구해줍니다.

같은 결과를 CASE WHEN으로도 구할 수 있지만…

-- ✅ CASE WHEN 사용
SELECT
    COUNT(CASE WHEN gender = 'M' THEN 1 END) AS male_users,
    COUNT(CASE WHEN gender = 'F' THEN 1 END) AS female_users
FROM users;

조건이 많아질수록 FILTER 방식이 더 읽기 쉬울 때가 있습니다.


⚠️ 주의 : 모든 DB에서 쓸 수 있는 건 아니에요

FILTER는 모든 DB에서 지원하는 건 아닙니다.


정리

✔️ FILTER는 집계 함수에 적용할 조건을 별도로 분리할 수 있어, 쿼리를 더 읽기 쉽게 만들어줍니다.
✔️ 단, 사용하는 데이터베이스 환경에서 지원 여부는 꼭 확인하세요.

profile
협업, 유지보수, 최적화를 고려한 데이터 실무 팁을 정리합니다.

0개의 댓글