0Pricing
Coding Interview Prep · 강의

SELECT에서 CASE 수식 사용하기

인라인 조건 논리와 검색형 CASE 및 단순형 CASE 형식을 작성합니다.

SELECT에서 CASE 수식 사용하기은(는) CoddyKit의 무료 Coding Interview Prep 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Coding Interview Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

CASE: SQL의 조건부 표현식

CASE는 SQL의 if/then/else와 같지만 하나의 값을 반환하는 표현식입니다. 따라서 SELECT, WHERE, ORDER BY, 심지어 집계 내부처럼 값이 사용될 수 있는 곳이라면 어디서든 작동합니다.

SELECT order_id,
       amount,
       CASE WHEN amount > 100 THEN 'large' ELSE 'small' END AS size
FROM orders;

검색형 CASE

검색형 CASE는 각 WHEN에서 불리언 조건을 확인하고 처음 일치하는 결과를 반환합니다. 가장 유연한 형식이며 순서가 중요합니다. 처음으로 참이 되는 조건이 선택됩니다.

SELECT score,
       CASE
         WHEN score >= 90 THEN 'A'
         WHEN score >= 80 THEN 'B'
         WHEN score >= 70 THEN 'C'
         ELSE 'F'
       END AS grade
FROM exam_results;

단순형 CASE

단순형 CASE는 하나의 표현식을 값 목록과 비교합니다. 같은지 확인하는 경우에는 더 짧지만 범위나 NULL 검사는 처리할 수 없습니다.

SELECT status_code,
       CASE status_code
         WHEN 1 THEN 'active'
         WHEN 2 THEN 'paused'
         WHEN 3 THEN 'closed'
         ELSE 'unknown'
       END AS status_label
FROM accounts;

검색형과 단순형: 각각 언제 사용할까요

고정된 값과 같은지 비교할 때는 단순형 CASE를, 범위나 NULL을 다룰 때는 검색형 CASE를 사용하십시오. 핵심 함정은 단순형 CASE가 NULL과 절대 일치할 수 없다는 점입니다. 검색형에서는 IS NULL을 사용하십시오.

-- Simple CASE will NOT catch NULL here
SELECT CASE WHEN bonus IS NULL THEN 'no bonus'
            ELSE 'has bonus'
       END AS bonus_flag
FROM employees;

WHEN 분기의 순서가 중요합니다

처음 일치하는 분기가 선택되므로 WHEN의 순서를 가장 구체적인 조건부터 가장 포괄적인 조건 순으로 정렬하십시오. 느슨한 기준을 먼저 배치하면 점수 95가 잘못된 레이블로 표시됩니다.

-- Correct order: highest threshold first
SELECT CASE
         WHEN score >= 90 THEN 'A'
         WHEN score >= 80 THEN 'B'
         ELSE 'C or below'
       END AS grade
FROM exam_results;

ELSE와 암시적인 NULL

일치하는 항목이 없고 ELSE를 생략하면 CASE는 NULL을 반환합니다. 예상하지 못한 값이 조용히 NULL이 되지 않도록 기본값을 명시적인 ELSE로 추가하십시오.

-- No ELSE: anything not 1/2 becomes NULL
SELECT CASE flag WHEN 1 THEN 'yes' WHEN 2 THEN 'no' END AS label
FROM toggles;

조건부 집계(피벗 패턴)

면접에서 가장 유용한 요령은 조건부 집계입니다. SUM 또는 COUNT 안에 CASE를 넣으면 한 번의 처리로 범주별 행 수를 셀 수 있어 깔끔한 피벗 형태의 보고서를 만들 수 있습니다.

SELECT
  SUM(CASE WHEN status = 'paid'    THEN 1 ELSE 0 END) AS paid_orders,
  SUM(CASE WHEN status = 'pending' THEN 1 ELSE 0 END) AS pending_orders,
  SUM(CASE WHEN status = 'paid'    THEN amount ELSE 0 END) AS paid_revenue
FROM orders;

COUNT는 NULL을 무시합니다: CASE의 간단한 활용

COUNT는 NULL을 무시하므로 ELSE를 생략할 수 있습니다. 일치하지 않는 행이 NULL이 되어 집계되지 않기 때문입니다. 조건부 집계를 조금 더 짧게 작성하는 방법입니다.

SELECT
  COUNT(CASE WHEN status = 'paid' THEN 1 END)    AS paid_orders,
  COUNT(CASE WHEN status = 'pending' THEN 1 END) AS pending_orders
FROM orders;

사용자 지정 정렬을 위한 ORDER BY의 CASE

ORDER BY에서 CASE를 사용하면 단순한 알파벳순이나 숫자순 대신 사용자 지정 우선순위로 정렬할 수 있습니다. 예를 들어 긴급 항목을 일반 항목보다 먼저, 그 밖의 항목을 마지막에 배치할 수 있습니다.

SELECT order_id, status
FROM orders
ORDER BY
  CASE status
    WHEN 'urgent' THEN 1
    WHEN 'normal' THEN 2
    ELSE 3
  END,
  order_id;

분기 전체에서 자료형 일관성 유지

CASE의 모든 분기는 호환되는 자료형을 반환해야 합니다. 숫자와 문자열을 섞으면 오류가 발생하거나 강제 변환이 수행될 수 있으므로 하나의 출력 자료형을 선택하고 필요하면 명시적으로 CAST하십시오.

-- Keep branches the same type
SELECT CASE WHEN qty > 0 THEN CAST(qty AS VARCHAR)
            ELSE 'none'
       END AS qty_label
FROM inventory;

조건부 필터링을 위한 WHERE의 CASE

WHERE에서 CASE를 사용하면 플래그에 따라 서로 다른 필터 로직을 적용할 수 있습니다. 예를 들어 지역마다 다른 가격 기준을 적용하는 방식입니다. AND와 OR가 복잡하게 얽힌 조건문보다 깔끔한 경우가 많습니다.

SELECT order_id, amount, region
FROM orders
WHERE amount > CASE region
                 WHEN 'US'  THEN 100
                 WHEN 'EU'  THEN 90
                 ELSE 50
               END;

빠른 확인

결과를 예측합니다.

복습

복습해 보겠습니다. CASE는 하나의 값을 반환하며 SELECT, WHERE, ORDER BY와 집계에서 사용할 수 있습니다. 검색형은 범위와 NULL을 처리하고, 처음 일치하는 조건이 선택되며, 일치하는 조건이 없으면 NULL이 반환됩니다. 모든 분기의 자료형은 호환되어야 합니다.

자주 묻는 질문

“SELECT에서 CASE 수식 사용하기” 강의는 무료인가요?

네 — “SELECT에서 CASE 수식 사용하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Coding Interview Prep 강의 전체를 잠금 해제할 수 있습니다. Coding Interview Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“SELECT에서 CASE 수식 사용하기”에서 뭘 배우나요?

인라인 조건 논리와 검색형 CASE 및 단순형 CASE 형식을 작성합니다. 브라우저에서 직접 실행하는 실습 코드로 Coding Interview Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Coding Interview Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Coding Interview Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“SELECT에서 CASE 수식 사용하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Coding Interview Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Coding Interview Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 열 투영과 별칭의 함정
  2. 계산 열과 수식 우선순위
  3. 고유성 판단에서 DISTINCT와 GROUP BY 비교하기
  4. SELECT에서 CASE 수식 사용하기
← Coding Interview Prep(으)로 돌아가기