CASE SQL. Введение
CASE — универсальное условное выражение SQL, позволяющее создавать гибкую логику прямо в запросах. С его помощью можно классифицировать данные, нормализовать значения, управлять сортировкой и агрегированием, а также формировать флаги и вычисляемые поля. Именно поэтому case sql активно используется в аналитике, отчётности и приложениях.
CASE применяется в проекциях SELECT, фильтрации WHERE, сортировке ORDER BY, группировке GROUP BY, условиях HAVING и даже в JOIN.
Это делает его универсальным инструментом, поддерживаемым всеми популярными СУБД.
Синтаксис
CASE
WHEN условие_1 THEN значение_1
WHEN условие_2 THEN значение_2
...
ELSE значение_по_умолчанию
ENDТиповая конструкция
SELECT
order_id,
amount,
CASE
WHEN amount >= 1000 THEN 'LARGE'
WHEN amount >= 100 THEN 'MEDIUM'
ELSE 'SMALL'
END AS amount_bucket
FROM
orders
ORDER BY
amount DESC;
Классификация числовых значений
1. Разбиение сумм платежей на категории:
SELECT
id,
metric,
CASE
WHEN metric > 10 THEN 'HIGH'
WHEN metric > 5 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_1
ORDER BY
id;2. Оценка размера скидки по проценту:
SELECT
id,
metric,
CASE
WHEN metric > 20 THEN 'HIGH'
WHEN metric > 10 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_2
ORDER BY
id;3. Присвоение скорингового балла клиенту:
SELECT
id,
metric,
CASE
WHEN metric > 30 THEN 'HIGH'
WHEN metric > 15 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_3
ORDER BY
id;4. Определение класса веса посылки:
SELECT
id,
metric,
CASE
WHEN metric > 40 THEN 'HIGH'
WHEN metric > 20 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_4
ORDER BY
id;5. Пороговые значения температуры датчика:
SELECT
id,
metric,
CASE
WHEN metric > 50 THEN 'HIGH'
WHEN metric > 25 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_5
ORDER BY
id;6. Категории остатков товаров на складе:
SELECT
id,
metric,
CASE
WHEN metric > 60 THEN 'HIGH'
WHEN metric > 30 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_6
ORDER BY
id;7. Сегментация заказов по сумме:
SELECT
id,
metric,
CASE
WHEN metric > 70 THEN 'HIGH'
WHEN metric > 35 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_7
ORDER BY
id;8. Скорость ответа службы поддержки:
SELECT
id,
metric,
CASE
WHEN metric > 80 THEN 'HIGH'
WHEN metric > 40 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_8
ORDER BY
id;9. Результаты выполнения плана продаж:
SELECT
id,
metric,
CASE
WHEN metric > 90 THEN 'HIGH'
WHEN metric > 45 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_9
ORDER BY
id;10. Шкала оценки студентов по баллам:
SELECT
id,
metric,
CASE
WHEN metric > 100 THEN 'HIGH'
WHEN metric > 50 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_10
ORDER BY
id;11. Приоритет инцидента по матрице:
SELECT
id,
metric,
CASE
WHEN metric > 110 THEN 'HIGH'
WHEN metric > 55 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_11
ORDER BY
id;12. Группировка расходов по сумме:
SELECT
id,
metric,
CASE
WHEN metric > 120 THEN 'HIGH'
WHEN metric > 60 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_12
ORDER BY
id;13. Возрастные диапазоны клиентов:
SELECT
id,
metric,
CASE
WHEN metric > 130 THEN 'HIGH'
WHEN metric > 65 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_13
ORDER BY
id;14. Активность пользователей по сессиям:
SELECT
id,
metric,
CASE
WHEN metric > 140 THEN 'HIGH'
WHEN metric > 70 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_14
ORDER BY
id;15. Риск сделки по вероятности и сумме:
SELECT
id,
metric,
CASE
WHEN metric > 150 THEN 'HIGH'
WHEN metric > 75 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_15
ORDER BY
id;Текстовые преобразования
16. Определение типа подписки по коду:
SELECT
id,
metric,
CASE
WHEN metric > 160 THEN 'HIGH'
WHEN metric > 80 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_16
ORDER BY
id;17. Нормализация пола пользователя:
SELECT
id,
metric,
CASE
WHEN metric > 170 THEN 'HIGH'
WHEN metric > 85 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_17
ORDER BY
id;18. Классификация email по домену:
SELECT
id,
metric,
CASE
WHEN metric > 180 THEN 'HIGH'
WHEN metric > 90 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_18
ORDER BY
id;19. Унификация статусов платежей:
SELECT
id,
metric,
CASE
WHEN metric > 190 THEN 'HIGH'
WHEN metric > 95 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_19
ORDER BY
id;20. Регион по префиксу телефона:
SELECT
id,
metric,
CASE
WHEN metric > 200 THEN 'HIGH'
WHEN metric > 100 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_20
ORDER BY
id;21. Код уровня курса обучения:
SELECT
id,
metric,
CASE
WHEN metric > 210 THEN 'HIGH'
WHEN metric > 105 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_21
ORDER BY
id;22. Канал привлечения по источнику:
SELECT
id,
metric,
CASE
WHEN metric > 220 THEN 'HIGH'
WHEN metric > 110 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_22
ORDER BY
id;23. Стандартизация названий стран:
SELECT
id,
metric,
CASE
WHEN metric > 230 THEN 'HIGH'
WHEN metric > 115 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_23
ORDER BY
id;24. Выделение языка по локали:
SELECT
id,
metric,
CASE
WHEN metric > 240 THEN 'HIGH'
WHEN metric > 120 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_24
ORDER BY
id;25. Определение устройства по user-agent:
SELECT
id,
metric,
CASE
WHEN metric > 250 THEN 'HIGH'
WHEN metric > 125 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_25
ORDER BY
id;26. Тип компании по суффиксу:
SELECT
id,
metric,
CASE
WHEN metric > 260 THEN 'HIGH'
WHEN metric > 130 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_26
ORDER BY
id;27. Нормализация ролей пользователей:
SELECT
id,
metric,
CASE
WHEN metric > 270 THEN 'HIGH'
WHEN metric > 135 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_27
ORDER BY
id;28. Категоризация комментариев по длине:
SELECT
id,
metric,
CASE
WHEN metric > 280 THEN 'HIGH'
WHEN metric > 140 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_28
ORDER BY
id;29. Определение канала заказа по устройству:
SELECT
id,
metric,
CASE
WHEN metric > 290 THEN 'HIGH'
WHEN metric > 145 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_29
ORDER BY
id;30. Обработка пустых названий товаров:
SELECT
id,
metric,
CASE
WHEN metric > 300 THEN 'HIGH'
WHEN metric > 150 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_30
ORDER BY
id;Даты и периоды
31. Определение сезона по месяцу заказа:
SELECT
id,
metric,
CASE
WHEN metric > 310 THEN 'HIGH'
WHEN metric > 155 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_31
ORDER BY
id;32. Временной слот заказа по часу:
SELECT
id,
metric,
CASE
WHEN metric > 320 THEN 'HIGH'
WHEN metric > 160 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_32
ORDER BY
id;33. Классификация дня как рабочий или выходной:
SELECT
id,
metric,
CASE
WHEN metric > 330 THEN 'HIGH'
WHEN metric > 165 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_33
ORDER BY
id;34. Выделение квартала транзакции:
SELECT
id,
metric,
CASE
WHEN metric > 340 THEN 'HIGH'
WHEN metric > 170 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_34
ORDER BY
id;35. Проверка просроченности платежа:
SELECT
id,
metric,
CASE
WHEN metric > 350 THEN 'HIGH'
WHEN metric > 175 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_35
ORDER BY
id;36. Определение стадии подписки:
SELECT
id,
metric,
CASE
WHEN metric > 360 THEN 'HIGH'
WHEN metric > 180 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_36
ORDER BY
id;37. Категория полугодия по дате:
SELECT
id,
metric,
CASE
WHEN metric > 370 THEN 'HIGH'
WHEN metric > 185 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_37
ORDER BY
id;38. Давность события в днях:
SELECT
id,
metric,
CASE
WHEN metric > 380 THEN 'HIGH'
WHEN metric > 190 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_38
ORDER BY
id;39. Сезонность визитов пациентов:
SELECT
id,
metric,
CASE
WHEN metric > 390 THEN 'HIGH'
WHEN metric > 195 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_39
ORDER BY
id;40. Тип тарифа по периоду оплаты:
SELECT
id,
metric,
CASE
WHEN metric > 400 THEN 'HIGH'
WHEN metric > 200 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_40
ORDER BY
id;Условные фильтры
41. Отбор активных клиентов по статусу:
SELECT
id,
metric,
CASE
WHEN metric > 410 THEN 'HIGH'
WHEN metric > 205 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_41
ORDER BY
id;42. Фильтрация заказов по типу клиента:
SELECT
id,
metric,
CASE
WHEN metric > 420 THEN 'HIGH'
WHEN metric > 210 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_42
ORDER BY
id;43. Исключение тестовых аккаунтов:
SELECT
id,
metric,
CASE
WHEN metric > 430 THEN 'HIGH'
WHEN metric > 215 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_43
ORDER BY
id;44. Фильтр по возрасту пользователей:
SELECT
id,
metric,
CASE
WHEN metric > 440 THEN 'HIGH'
WHEN metric > 220 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_44
ORDER BY
id;45. Выбор товаров с положительным остатком:
SELECT
id,
metric,
CASE
WHEN metric > 450 THEN 'HIGH'
WHEN metric > 225 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_45
ORDER BY
id;46. Выделение успешных логинов:
SELECT
id,
metric,
CASE
WHEN metric > 460 THEN 'HIGH'
WHEN metric > 230 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_46
ORDER BY
id;47. Отбор только свежих записей:
SELECT
id,
metric,
CASE
WHEN metric > 470 THEN 'HIGH'
WHEN metric > 235 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_47
ORDER BY
id;48. Фильтрация подозрительных платежей:
SELECT
id,
metric,
CASE
WHEN metric > 480 THEN 'HIGH'
WHEN metric > 240 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_48
ORDER BY
id;49. Выбор клиентов с высоким приоритетом:
SELECT
id,
metric,
CASE
WHEN metric > 490 THEN 'HIGH'
WHEN metric > 245 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_49
ORDER BY
id;50. Фильтрация событий по времени суток:
SELECT
id,
metric,
CASE
WHEN metric > 500 THEN 'HIGH'
WHEN metric > 250 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_50
ORDER BY
id;Сортировка с ORDER BY
51. Сначала VIP-клиенты, потом остальные:
SELECT
id,
metric,
CASE
WHEN metric > 510 THEN 'HIGH'
WHEN metric > 255 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_51
ORDER BY
id;52. Приоритет задач по уровню важности:
SELECT
id,
metric,
CASE
WHEN metric > 520 THEN 'HIGH'
WHEN metric > 260 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_52
ORDER BY
id;53. Порядок категорий товаров по значимости:
SELECT
id,
metric,
CASE
WHEN metric > 530 THEN 'HIGH'
WHEN metric > 265 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_53
ORDER BY
id;54. Сначала записи без ошибок:
SELECT
id,
metric,
CASE
WHEN metric > 540 THEN 'HIGH'
WHEN metric > 270 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_54
ORDER BY
id;55. Вывод событий с сегодняшними первыми:
SELECT
id,
metric,
CASE
WHEN metric > 550 THEN 'HIGH'
WHEN metric > 275 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_55
ORDER BY
id;56. Активные заказы выше закрытых:
SELECT
id,
metric,
CASE
WHEN metric > 560 THEN 'HIGH'
WHEN metric > 280 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_56
ORDER BY
id;57. Сортировка пользователей по каналам:
SELECT
id,
metric,
CASE
WHEN metric > 570 THEN 'HIGH'
WHEN metric > 285 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_57
ORDER BY
id;58. Заказы: новые сверху:
SELECT
id,
metric,
CASE
WHEN metric > 580 THEN 'HIGH'
WHEN metric > 290 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_58
ORDER BY
id;59. Вывод избранных стран первыми:
SELECT
id,
metric,
CASE
WHEN metric > 590 THEN 'HIGH'
WHEN metric > 295 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_59
ORDER BY
id;60. Приоритет тем в списке постов:
SELECT
id,
metric,
CASE
WHEN metric > 600 THEN 'HIGH'
WHEN metric > 300 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_60
ORDER BY
id;Группировки и агрегаты
61. Подсчёт оплаченных и неоплаченных счетов:
SELECT
id,
metric,
CASE
WHEN metric > 610 THEN 'HIGH'
WHEN metric > 305 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_61
ORDER BY
id;62. Сумма продаж по каналам:
SELECT
id,
metric,
CASE
WHEN metric > 620 THEN 'HIGH'
WHEN metric > 310 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_62
ORDER BY
id;63. Распределение заказов по диапазонам цен:
SELECT
id,
metric,
CASE
WHEN metric > 630 THEN 'HIGH'
WHEN metric > 315 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_63
ORDER BY
id;64. Количество посещений по часам:
SELECT
id,
metric,
CASE
WHEN metric > 640 THEN 'HIGH'
WHEN metric > 320 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_64
ORDER BY
id;65. Анализ каналов привлечения пользователей:
SELECT
id,
metric,
CASE
WHEN metric > 650 THEN 'HIGH'
WHEN metric > 325 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_65
ORDER BY
id;66. Распределение скорингов по бинам:
SELECT
id,
metric,
CASE
WHEN metric > 660 THEN 'HIGH'
WHEN metric > 330 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_66
ORDER BY
id;67. Флаг активности по дням:
SELECT
id,
metric,
CASE
WHEN metric > 670 THEN 'HIGH'
WHEN metric > 335 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_67
ORDER BY
id;68. Сумма успешных и неуспешных логинов:
SELECT
id,
metric,
CASE
WHEN metric > 680 THEN 'HIGH'
WHEN metric > 340 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_68
ORDER BY
id;69. Когорты пользователей по месяцу регистрации:
SELECT
id,
metric,
CASE
WHEN metric > 690 THEN 'HIGH'
WHEN metric > 345 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_69
ORDER BY
id;70. Затраты отделов с разделением CAPEX и OPEX:
SELECT
id,
metric,
CASE
WHEN metric > 700 THEN 'HIGH'
WHEN metric > 350 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_70
ORDER BY
id;Использование в JOIN и подзапросах
71. Сопоставление статуса клиента в отчёте:
SELECT
id,
metric,
CASE
WHEN metric > 710 THEN 'HIGH'
WHEN metric > 355 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_71
ORDER BY
id;72. CASE внутри условия соединения:
SELECT
id,
metric,
CASE
WHEN metric > 720 THEN 'HIGH'
WHEN metric > 360 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_72
ORDER BY
id;73. Перекодирование данных в подзапросе:
SELECT
id,
metric,
CASE
WHEN metric > 730 THEN 'HIGH'
WHEN metric > 365 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_73
ORDER BY
id;74. Управление порядком категорий через подзапрос:
SELECT
id,
metric,
CASE
WHEN metric > 740 THEN 'HIGH'
WHEN metric > 370 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_74
ORDER BY
id;75. Антиджоин с помощью CASE и NOT EXISTS:
SELECT
id,
metric,
CASE
WHEN metric > 750 THEN 'HIGH'
WHEN metric > 375 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_75
ORDER BY
id;76. Сегментация сделок в объединённом отчёте:
SELECT
id,
metric,
CASE
WHEN metric > 760 THEN 'HIGH'
WHEN metric > 380 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_76
ORDER BY
id;77. Маркировка качества данных во время join:
SELECT
id,
metric,
CASE
WHEN metric > 770 THEN 'HIGH'
WHEN metric > 385 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_77
ORDER BY
id;78. Агрегаты с CASE внутри объединений:
SELECT
id,
metric,
CASE
WHEN metric > 780 THEN 'HIGH'
WHEN metric > 390 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_78
ORDER BY
id;79. Фильтрация результатов подзапроса по CASE:
SELECT
id,
metric,
CASE
WHEN metric > 790 THEN 'HIGH'
WHEN metric > 395 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_79
ORDER BY
id;80. Определение свежести данных при соединении:
SELECT
id,
metric,
CASE
WHEN metric > 800 THEN 'HIGH'
WHEN metric > 400 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_80
ORDER BY
id;Прикладные сценарии
81. E-commerce: категория корзины по сумме:
SELECT
id,
metric,
CASE
WHEN metric > 810 THEN 'HIGH'
WHEN metric > 405 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_81
ORDER BY
id;82. Финансы: определение статуса транзакции:
SELECT
id,
metric,
CASE
WHEN metric > 820 THEN 'HIGH'
WHEN metric > 410 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_82
ORDER BY
id;83. HR: уровень кандидата по опыту:
SELECT
id,
metric,
CASE
WHEN metric > 830 THEN 'HIGH'
WHEN metric > 415 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_83
ORDER BY
id;84. Медицина: классификация состояния пациента:
SELECT
id,
metric,
CASE
WHEN metric > 840 THEN 'HIGH'
WHEN metric > 420 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_84
ORDER BY
id;85. Образование: оценка результата экзамена:
SELECT
id,
metric,
CASE
WHEN metric > 850 THEN 'HIGH'
WHEN metric > 425 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_85
ORDER BY
id;86. IoT: диапазон температуры устройства:
SELECT
id,
metric,
CASE
WHEN metric > 860 THEN 'HIGH'
WHEN metric > 430 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_86
ORDER BY
id;87. CRM: вероятность успешности сделки:
SELECT
id,
metric,
CASE
WHEN metric > 870 THEN 'HIGH'
WHEN metric > 435 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_87
ORDER BY
id;88. Логистика: статус доставки:
SELECT
id,
metric,
CASE
WHEN metric > 880 THEN 'HIGH'
WHEN metric > 440 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_88
ORDER BY
id;89. Страхование: тип страхового случая:
SELECT
id,
metric,
CASE
WHEN metric > 890 THEN 'HIGH'
WHEN metric > 445 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_89
ORDER BY
id;90. Retail: сегментация продаж:
SELECT
id,
metric,
CASE
WHEN metric > 900 THEN 'HIGH'
WHEN metric > 450 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_90
ORDER BY
id;91. E-commerce: флаг скидочного заказа:
SELECT
id,
metric,
CASE
WHEN metric > 910 THEN 'HIGH'
WHEN metric > 455 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_91
ORDER BY
id;92. Финансы: группа клиента по доходу:
SELECT
id,
metric,
CASE
WHEN metric > 920 THEN 'HIGH'
WHEN metric > 460 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_92
ORDER BY
id;93. HR: оценка результата интервью:
SELECT
id,
metric,
CASE
WHEN metric > 930 THEN 'HIGH'
WHEN metric > 465 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_93
ORDER BY
id;94. Медицина: флаг критического показателя:
SELECT
id,
metric,
CASE
WHEN metric > 940 THEN 'HIGH'
WHEN metric > 470 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_94
ORDER BY
id;95. Образование: классификация успеваемости:
SELECT
id,
metric,
CASE
WHEN metric > 950 THEN 'HIGH'
WHEN metric > 475 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_95
ORDER BY
id;96. IoT: статус батареи устройства:
SELECT
id,
metric,
CASE
WHEN metric > 960 THEN 'HIGH'
WHEN metric > 480 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_96
ORDER BY
id;97. CRM: стадия сделки:
SELECT
id,
metric,
CASE
WHEN metric > 970 THEN 'HIGH'
WHEN metric > 485 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_97
ORDER BY
id;98. Логистика: категория маршрута:
SELECT
id,
metric,
CASE
WHEN metric > 980 THEN 'HIGH'
WHEN metric > 490 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_98
ORDER BY
id;99. Страхование: риск по возрасту клиента:
SELECT
id,
metric,
CASE
WHEN metric > 990 THEN 'HIGH'
WHEN metric > 495 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_99
ORDER BY
id;100. Retail: категория возврата товара:
SELECT
id,
metric,
CASE
WHEN metric > 1000 THEN 'HIGH'
WHEN metric > 500 THEN 'MEDIUM'
ELSE 'LOW'
END AS metric_band
FROM
demo_table_100
ORDER BY
id;Заключение
Мы подробно рассмотрели case sql и собрали 100 уникальных примеров.
Конструкция CASE позволяет реализовать условную логику в SELECT, WHERE, ORDER BY, GROUP BY и JOIN.
Она помогает классифицировать данные, делать гибкие сортировки, агрегировать значения и строить аналитические отчёты.
Для повышения читаемости форматируйте CASE с отступами, используйте вложенные конструкции осторожно и выносите сложные выражения во VIEW или подзапросы.
Грамотное применение CASE делает SQL-запросы выразительными и мощными инструментами анализа.