TGViewer
Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) Дима SQL-ит 🧑‍💻 (Аналитика данных, AI) @dima_sqlit · 2.27K subscribers
Post #88 2.1K
🤨 Сводные таблицы в SQL: простой способ с CASE WHEN:

Сводные таблицы — это трюк в SQL, чтобы собрать данные в компактный вид. Вместо того чтобы показывать каждую запись отдельно, вы делаете колонки из категорий (например, из месяцев или кварталов). Так отчёт становится короче и проще для чтения. Сегодня разберём самый простой метод с CASE WHEN — он работает везде, без сложностей. Покажу на примере продаж в магазине.

Что такое сводная таблица на пальцах:
Представьте: у вас есть список заказов, где каждый заказ — отдельная строка. В сводной таблице вы группируете по клиенту и показываете суммы по кварталам в колонках (Q1, Q2 и т.д.). Вместо 6 строк на двух клиентов — всего 2 строки, где всё видно сразу.

Пример: таблица заказов
Вот исходная таблица Orders (продажи за год):
| customer_id | quarter | order_amount |
|-------------|---------|--------------|
| 101 | Q1 | 5000 |
| 101 | Q2 | 7000 |
| 101 | Q3 | 6000 |
| 102 | Q1 | 3000 |
| 102 | Q2 | 4500 |
| 102 | Q4 | 5500 |


Теперь задача: для каждого клиента показать сумму по кварталам в колонках.

Как это сделать шаг за шагом:
• Группируем по клиенту: GROUP BY customer_id — чтобы данные по каждому клиенту были в одной строке.
• Создаём колонки с CASE WHEN: Для каждого квартала проверяем "если это Q1, то суммируем сумму заказа, иначе 0". SUM() посчитает итог.

Вот полный запрос:
SELECT  
customer_id,
SUM(CASE WHEN quarter = 'Q1' THEN order_amount ELSE 0 END) AS q1_sales,
SUM(CASE WHEN quarter = 'Q2' THEN order_amount ELSE 0 END) AS q2_sales,
SUM(CASE WHEN quarter = 'Q3' THEN order_amount ELSE 0 END) AS q3_sales,
SUM(CASE WHEN quarter = 'Q4' THEN order_amount ELSE 0 END) AS q4_sales
FROM Orders
GROUP BY customer_id
ORDER BY customer_id;


Что получится:
| customer_id | q1_sales | q2_sales | q3_sales | q4_sales |
|-------------|----------|----------|----------|----------|
| 101 | 5000 | 7000 | 6000 | 0 |
| 102 | 3000 | 4500 | 0 | 5500 |


Теперь по клиенту 101 всё в одной строке: видно, что в Q4 он не покупал. Легко сравнить!

Итог:
CASE WHEN — это лёгкий способ сделать сводную таблицу.

🍸 Если вы нашли пост для себя полезным, то накидывайте реакций, чтобы я понимал, что вам эта тема интересна!
❤️Поддержать канал бустами, чтобы у автора появился дополнительный функционал можно - здесь (это бесплатно и доступно с подпиской telegram premium)

❓ Пробовали сводные таблицы? Что считали — продажи или что-то другое? Делитесь в комментах!
✔️ Подпишитесь на канал, чтобы не пропустить следующие посты.

Сделал сайт - оцените:
🚬 Вопросы, обучение, консультации

@dima_sqlit
  • 🔥 34
  • ❤‍🔥 16
  • 🐳 6
More from @dima_sqlit
  1. Sep 22, 2026Что сейчас стоит изучать Аналитику — чтобы перейти в DS/ML ? Замечаю общий тренд на изучен…
  2. Sep 21, 2026🧠 Уровень абстракции — навык, который сэкономит вам годы учёбы: Когда я начинал изучать P…
  3. Sep 18, 2026🏦 Задача с собеса в Т-банк на SQL: вторая зарплата в отделе Условие: есть таблица сотрудн…
  4. Sep 16, 2026🏠 IT ипотека (Часть 3) — Как я сэкономил на ремонте: кэшбэк, промокоды и один неочевидный…
  5. Sep 7, 2026🍂 Осень — сезон найма: Каждый год одна и та же история — в сентябре рынок будто просыпает…
  6. Aug 24, 2026P-value простыми словами: Условие: подбросили монету 10 раз, выпало 9 орлов. Можно ли тепе…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →