본문 바로가기
C.W.K.
Stream
Lesson 08 of 10 · published

CASE WHEN — 조건 표현

~10 min · sql, case, conditional

Level 0Scout
0 XP0/80 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

SQL의 if/elif/else

SELECT list 안에서 조건을 표현할 수 있는 건 CASE WHEN뿐이야. 모양은 둘이고.

  • Simple CASECASE col WHEN v1 THEN r1 WHEN v2 THEN r2 ELSE r3 END. 컬럼 하나를 값과 맞춰볼 때 써.
  • Searched CASECASE WHEN cond1 THEN r1 WHEN cond2 THEN r2 ELSE r3 END. 아무 boolean 조건이나 넣을 수 있어서 훨씬 유연해. 열에 아홉은 이걸 쓰게 돼.
Tip: 집계 함수 안에 CASE를 넣으면 힘이 확 세져. sum(CASE WHEN status='paid' THEN total END) 하나면 subquery 없이 조건부 합계가 나오거든. 보고용 query라면 거의 빠짐없이 등장하는 패턴이야.

Code

파생 컬럼 만드는 CASE·sql
SELECT id, role,
       CASE
         WHEN role = 'admin'      THEN 'priority'
         WHEN role = 'moderator'   THEN 'support'
         ELSE 'standard'
       END AS tier
FROM users;
집계 안 CASE — query 한 번에 pivot·sql
SELECT brain,
       sum(CASE WHEN role = 'user'      THEN 1 END) AS user_msgs,
       sum(CASE WHEN role = 'assistant' THEN 1 END) AS assistant_msgs
FROM   messages
GROUP  BY brain;

External links

Exercise

messages 테이블에서 query 하나로 이걸 만들어봐. brain마다 row 하나씩, 컬럼은 셋 — 전체, user, assistant message 수 —를 SUM 안의 CASE WHEN으로. 그리고 네 번째 컬럼을 붙여서 전체 개수 기준으로 brain을 'busy', 'normal', 'quiet'로 나눠봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.