CASE SQL — 100 универсальных примеров для любых реализаций SQL

🟢 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-запросы выразительными и мощными инструментами анализа.


 

Понравилась статья? Поделиться с друзьями: