SELECT user_id, total,
CASE WHEN total >= 10000 THEN 'VIP'
WHEN total >= 3000 THEN 'средний'
ELSE 'новичок' END AS segment
FROM customer_revenue;
Результат:
user_id | total | segment 1 | 12000 | VIP 2 | 4000 | средний 3 | 500 | новичок
SELECT month,
SUM(CASE WHEN status = 'paid' THEN 1 ELSE 0 END) AS paid,
SUM(CASE WHEN status = 'cancelled' THEN 1 ELSE 0 END) AS cancelled
FROM orders
GROUP BY month;
Результат:
month | paid | cancelled 2026-01 | 120 | 14 2026-02 | 138 | 9Порешать SQL-задачи в тренажёре →
CASE — один из самых частых элементов в задачах: сегментация, категоризация возрастов, и особенно pivot через SUM(CASE WHEN). На собеседовании часто просят «разверни строки в колонки» — это ровно условная агрегация с CASE.
Оберни CASE в агрегат: SUM(CASE WHEN категория = 'X' THEN значение ELSE 0 END) даёт отдельную колонку на каждую категорию — это классический разворот строк в столбцы без оператора PIVOT.
COALESCE выбирает первое не-NULL значение из списка. CASE — универсальнее: проверяет произвольные условия (сравнения, диапазоны) и возвращает любое значение. COALESCE — частный случай логики «если NULL».
Да, CASE — выражение, его можно ставить в SELECT, WHERE, ORDER BY, GROUP BY и внутрь агрегатных функций.
Условная логика · Пивот (поворот таблицы)
COALESCE · NULLIF · CAST · ROUND · MOD / % · SIGN / TRUNC
Открыть SQL-тренажёр (565 задач) →