← Назад к вопросам

Что такое CASE WHEN в SQL и как его использовать?

1.0 Junior🔥 301 комментариев
#SQL и базы данных

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое CASE WHEN в SQL

CASE WHEN — это условный оператор SQL, который позволяет выполнять различные операции на основе заданных условий. Это аналог if-else в программировании. Он используется для трансформации данных и создания новых колонок с условными значениями.

Синтаксис CASE WHEN

Существует две формы синтаксиса:

Простая форма (с выражением)

CASE expression
  WHEN value1 THEN result1
  WHEN value2 THEN result2
  ELSE default_result
END

Поисковая форма (с условиями)

CASE
  WHEN condition1 THEN result1
  WHEN condition2 THEN result2
  WHEN condition3 THEN result3
  ELSE default_result
END

Практические примеры

Пример 1: Категоризация по диапазону

SELECT 
  employee_id,
  salary,
  CASE
    WHEN salary < 50000 THEN Junior
    WHEN salary >= 50000 AND salary < 100000 THEN Middle
    WHEN salary >= 100000 THEN Senior
  END AS level
FROM employees;

Пример 2: Простая классификация

SELECT 
  order_id,
  order_date,
  CASE order_status
    WHEN pending THEN Ожидание
    WHEN processing THEN Обработка
    WHEN completed THEN Завершено
    WHEN cancelled THEN Отменено
    ELSE Неизвестно
  END AS status_ru
FROM orders;

Пример 3: Агрегация с условиями

SELECT 
  department,
  COUNT(CASE WHEN salary > 80000 THEN 1 END) AS high_earners,
  COUNT(CASE WHEN salary <= 80000 THEN 1 END) AS regular_earners,
  COUNT(*) AS total
FROM employees
GROUP BY department;

Когда использовать CASE WHEN

Создание флагов и категорий:

  • Разделение данных на группы
  • Преобразование статусов в читаемые названия
  • Расчет бинарных флагов

Условная агрегация:

  • Подсчет записей по разным условиям в одном запросе
  • Вычисление сумм с фильтрацией

Преобразование данных:

  • Нормализация значений
  • Создание новых метрик

Важные моменты

  • CASE WHEN рассматривает условия по порядку, первое совпадение выполняется
  • ELSE необязателен, если не совпадают условия — результат NULL
  • CASE WHEN работает в SELECT, WHERE, ORDER BY, HAVING
  • Производительность: при множестве условий предпочитайте поисковую форму

CASE WHEN — мощный инструмент для трансформации данных прямо в SQL запросе, экономя время на обработке в приложении.

Что такое CASE WHEN в SQL и как его использовать? | PrepBro