Menu
Coddy logo textTech

NULL 처리를 위한 COALESCE

Coddy SQL 여정의 심화 과정 섹션에 포함된 레슨 — 27개 중 3번째.

COALESCENULL이 아닌 첫 번째 인수를 반환합니다:

COALESCE(nickname, first_name, 'Anonymous')

왼쪽에서 오른쪽으로 읽으며 첫 번째 null이 아닌 값에서 멈춥니다. CASE 문을 사용할 필요 없이 쿼리에서 대체 값을 제공하는 가장 깔끔한 방법입니다.

일반적인 용도:

  • LEFT JOIN에서 NULL 대신 0 표시: COALESCE(SUM(amount), 0)
  • 비어 있지 않은 첫 번째 선택적 필드 선택: COALESCE(mobile, home, work)
challenge icon

챌린지

쉬움

사용 가능한 테이블 및 컬럼:

  • <strong>users</strong>: <strong>id</strong>, <strong>display_name</strong>, <strong>email</strong>
  • <strong>orders</strong>: <strong>user_id</strong>, <strong>amount</strong>

사용자당 한 행씩 다음 정보를 반환하세요:

  • id
  • label: display_name이 설정되어 있으면 해당 값, 그렇지 않으면 email, 둘 다 없으면 'unknown'
  • total_spent: 사용자의 주문 amount 합계; 주문이 없는 사용자는 NULL이 아닌 0으로 표시되어야 함

id를 기준으로 정렬하세요. 힌트: users에서 orders로의 LEFT JOINCOALESCE(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
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

심화 과정의 모든 레슨