NULL 처리를 위한 COALESCE
Coddy SQL 여정의 심화 과정 섹션에 포함된 레슨 — 27개 중 3번째.
COALESCE는 NULL이 아닌 첫 번째 인수를 반환합니다:
COALESCE(nickname, first_name, 'Anonymous')왼쪽에서 오른쪽으로 읽으며 첫 번째 null이 아닌 값에서 멈춥니다. CASE 문을 사용할 필요 없이 쿼리에서 대체 값을 제공하는 가장 깔끔한 방법입니다.
일반적인 용도:
LEFT JOIN에서NULL대신0표시:COALESCE(SUM(amount), 0)- 비어 있지 않은 첫 번째 선택적 필드 선택:
COALESCE(mobile, home, work)
챌린지
쉬움사용 가능한 테이블 및 컬럼:
<strong>users</strong>:<strong>id</strong>,<strong>display_name</strong>,<strong>email</strong><strong>orders</strong>:<strong>user_id</strong>,<strong>amount</strong>
사용자당 한 행씩 다음 정보를 반환하세요:
idlabel:display_name이 설정되어 있으면 해당 값, 그렇지 않으면email, 둘 다 없으면'unknown'total_spent: 사용자의 주문amount합계; 주문이 없는 사용자는NULL이 아닌0으로 표시되어야 함
id를 기준으로 정렬하세요. 힌트: users에서 orders로의 LEFT JOIN과 COALESCE(SUM(...), 0)를 사용하면 누락된 행을 처리할 수 있습니다.
치트 시트
COALESCE는 첫 번째로 NULL이 아닌 인수를 반환합니다:
COALESCE(nickname, first_name, 'Anonymous')일반적인 용도:
- 대체 표시 값:
COALESCE(mobile, home, work) LEFT JOIN집계 결과의NULL교체:COALESCE(SUM(amount), 0)
직접 해보기
SELECT u.id,
-- COALESCE를 통한 label
-- COALESCE(SUM(...), 0)를 통한 total_spent
FROM users u
LEFT JOIN orders o ON o.user_id = u.id
GROUP BY u.id
ORDER BY u.id
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.