C.W.K.
Stream
Lesson 08 of 16 · published

CASE, COALESCE, 조건 로직

~10 min · queries, expressions

Level 0스키마 새싹
0 XP0/86 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

SELECT 안 if/then/else

가끔 쿼리 에서 조건 로직 필요 — 행을 버킷으로 분류, 누락값 대체, 타입별 다른 total 계산. CASE 와 COALESCE 가 일꾼; 둘 다 + 사촌 NULLIF, GREATEST/LEAST 배워.

두 CASE 모양

Searched CASE 가 조건 순서대로 평가: CASE WHEN x >= 100 THEN 'high' ... END. Simple CASE 가 단일 표현식 매치: CASE status WHEN 'P' THEN 'Pending' ... END. Searched 가 더 유연; simple 이 한 컬럼에 동등 매치할 때 더 짧음.

Code

Bucket 위한 searched CASE·sql
SELECT id, total,
       CASE
         WHEN total >= 1000 THEN 'large'
         WHEN total >= 100  THEN 'medium'
         ELSE 'small'
       END AS order_size
FROM orders;
Code-to-label 위한 simple CASE·sql
SELECT id,
       CASE status
         WHEN 'P' THEN 'Pending'
         WHEN 'S' THEN 'Shipped'
         WHEN 'D' THEN 'Delivered'
         WHEN 'R' THEN 'Returned'
         ELSE 'Unknown'
       END AS status_label
FROM orders;
COALESCE / NULLIF / GREATEST·sql
SELECT name,
       COALESCE(nickname, first_name, 'Anonymous') AS display_name,
       NULLIF(notes, '') AS notes,             -- 빈 문자열을 NULL 로
       GREATEST(login_count, 0) AS safe_count, -- 음수 가드
       LEAST(quota, used)                       -- 둘 중 작은 값
FROM users;

External links

Exercise

유저를 tenure ('new', 'regular', 'veteran') 로 버킷팅하는 SELECT 의 CASE + 커스텀 status 우선순위 정렬하는 ORDER BY 의 CASE 사용 쿼리. 최소 한 컬럼에 COALESCE 사용.

Progress

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

댓글 0

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

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