Объясняется с примерами

Проще говоря, оператор CASE WHEN оценивает заданные условия и возвращает результаты на основе этой оценки.

Мы можем использовать его для получения новых столбцов из существующих. Но есть и другие случаи, когда CASE WHEN пригодится для решения сложных задач.

Что мы узнаем из этой статьи:

  • Используйте CASE WHEN для получения новых столбцов
  • Используйте CASE WHEN в GROUP BY
  • Используйте CASE WHEN при расчете агрегаций на основе производных категорий.

Мы будем запрашивать таблицу product_inventory, которую я создал с фиктивными данными. Вот первые пять строк этой таблицы:

1. Используйте случай, когда нужно получить новые столбцы

Оператор CASE WHEN (или CASE) позволяет оценивать условия, результаты которых можно использовать для создания новых столбцов.

Например, мы можем создать новый столбец price_group со значениями низкий, средний, высокий на основе цен на продукты. Это можно рассматривать как создание ценовых групп товаров.

SELECT
 product_description,
 price,
 CASE
  WHEN price > 20 THEN 'high'
  WHEN price <= 20 AND price > 10 THEN 'medium'
  WHEN price <= 10 THEN 'low'
 END AS price_group
FROM product_inventory

Оператор CASE WHEN создает product_column на основе следующих критериев:

  • Если цена выше 20, значение «высокое».
  • Если цена находится между 10 и 20, значение является «средним».
  • Если цена меньше 10, значение «низкое».

Мы также можем написать этот запрос следующим образом:

SELECT
 product_description,
 price,
 CASE
  WHEN price > 20 THEN 'high'
  WHEN…