SQL

SQL

조건마다 다른 집계를 원할 때는 SUM(CASE WHEN ...)이 정답이다

페이지 정보

profile_image
영삼이
0건 46회 25-03-28 15:23

본문

✅ 조건마다 다른 집계를 원할 때는 SUM(CASE WHEN ...)이 정답이다

하나의 쿼리로 여러 조건을 동시에 집계하라


❌ 조건별로 쿼리를 나눠서 실행하는 경우

-- 상태가 paid인 주문 수
SELECT COUNT(*) FROM orders WHERE status = 'paid';

-- 상태가 pending인 주문 수
SELECT COUNT(*) FROM orders WHERE status = 'pending';
  • 쿼리를 여러 번 실행해야 함

  • 결과를 합치려면 별도 로직 필요


✅ 하나의 쿼리로 조건별 집계 처리

SELECT
  COUNT(*) AS total,
  SUM(CASE WHEN status = 'paid' THEN 1 ELSE 0 END) AS paid_count,
  SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) AS pending_count
FROM orders;
  • 조건마다 다른 집계값을 동시에 출력

  • 쿼리 1번으로 원하는 데이터 모두 확보


활용도 높은 패턴

  • 상태별 수량, 카테고리별 합계

  • 특정 날짜 범위 조건

  • 조건별 평균, 최대값 등도 가능


✔️ 조건이 많을수록 쿼리를 나누지 말고
SUM(CASE WHEN ...)을 활용해 하나로 처리하라.
성능과 유지보수성 모두 좋아진다.

댓글목록

등록된 댓글이 없습니다.