Таблица users(id) и orders(user_id, amount). Для каждого юзера посчитайте total_spent (если нет заказов = 0). Разбейте на бакеты: «whale» (>10000), «middle» (1000-10000), «light» (1-999), «zero» (0). Выведите bucket, users_count. Сортировка в логическом порядке: zero, light, middle, whale.
CREATE TABLE users (id INTEGER PRIMARY KEY); CREATE TABLE orders (id INTEGER PRIMARY KEY, user_id INTEGER, amount REAL);
CTE LEFT JOIN COALESCE CASE WHEN GROUP BY
Задача «T-Bank: bucketing юзеров по сумме покупок» учит ветвить логику через CASE, корректно обрабатывать NULL (COALESCE/NULLIF) и считать условные метрики. Такие задачи встречаются на собеседованиях в T-Bank и других IT-компаниях. Уровень средний — типичная боевая задача на уверенное владение SQL.
Сначала разберись со схемой данных и пойми, какой результат нужен на выходе. Определи, какие таблицы и поля задействованы, и собирай запрос пошагово: фильтрация → соединение или группировка → итоговый отбор и сортировка. Проверь результат на крайних случаях — NULL, дубликаты, пустые группы. Свой запрос сразу прогоняешь автопроверкой в интерактивной SQL-песочнице на реальной базе (SQLite и PostgreSQL 16 прямо в браузере).
Разбор темы с примерами — в гайде «Условная логика в SQL». Хочешь системно с нуля — пройди бесплатный курс «SQL с нуля».
Решить в интерактивной SQL-песочнице → ← Все SQL-задачи