Команда CASE

Команда CASE используется для реализации условной логики в SQL-запросах. Она позволяет возвращать разные значения в зависимости от выполнения заданных условий.

Синтаксис

sqlCASE
  WHEN condition THEN result
  WHEN condition THEN result
  ELSE result
END

Таблицы для примеров

employees
id name age salary
1 Ivan 25 40000
2 Petr 30 45000
3 Sergey 28 42000
4 Olga 35 55000
5 Dmitry 40 60000

Пример

Давайте определим уровень дохода сотрудника на основе значения его зарплаты:

sqlSELECT name, salary,
  CASE
    WHEN salary < 45000 THEN 'low'
    WHEN salary BETWEEN 45000 AND 55000 THEN 'medium'
    ELSE 'high'
  END AS salary_level
FROM employees
ORDER BY id

Результат выполнения кода:

name salary salary_level
Ivan 40000 low
Petr 45000 medium
Sergey 42000 low
Olga 55000 medium
Dmitry 60000 high

Пример

Давайте используем CASE для формирования текстового описания возраста сотрудника:

sqlSELECT name, age,
  CASE
    WHEN age < 30 THEN 'young'
    WHEN age BETWEEN 30 AND 39 THEN 'adult'
    ELSE 'senior'
  END AS age_group
FROM employees
ORDER BY id

Результат выполнения кода:

name age age_group
Ivan 25 young
Petr 30 adult
Sergey 28 young
Olga 35 adult
Dmitry 40 senior

Пример

Давайте используем CASE для сортировки данных по пользовательскому приоритету:

sqlSELECT name, salary
FROM employees
ORDER BY
CASE
  WHEN salary >= 55000 THEN 1
  WHEN salary >= 45000 THEN 2
  ELSE 3
END
salary DESC

Результат выполнения кода:

name salary
Olga 55000
Dmitry 60000
Petr 45000
Sergey 42000
Ivan 40000

Смотрите также

  • команду WHERE,
    которая фильтрует строки по условию
  • функцию COALESCE,
    которая берёт первое не-NULL значение
  • функцию IFNULL,
    которая подменяет NULL на значение
  • функцию NULLIF,
    которая возвращает NULL при совпадении