← Назад к вопросам
Что такое 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 запросе, экономя время на обработке в приложении.