Menu
Coddy logo textTech

Преобразование строк в столбцы

Часть раздела Продвинутый уровень путешествия по SQL на Coddy. Урок 14 из 27.

Объедините условную агрегацию с GROUP BY, чтобы превратить строки в столбцы. Это SQL-версия сводной таблицы.

Предположим, что sales содержит строки вида (month, product, units). Чтобы получить одну строку для каждого месяца и один столбец для каждого продукта:

SELECT
    month,
    SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
    SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b
FROM sales
GROUP BY month

Группа GROUP BY, которую видит каждый SUM(CASE …), — это строки за один месяц; CASE выбирает срез для одного продукта.

challenge icon

Задание

Легко

Доступные таблицы и столбцы:

  • sales: month, product, units

Преобразуйте данные так, чтобы каждая строка соответствовала одному значению month и содержала следующие столбцы:

  • month
  • apples: общее количество units для продукта 'apples' в этом месяце
  • bananas: то же для 'bananas'
  • cherries: то же для 'cherries'
  • total: общее количество units для всех продуктов в этом месяце

Верните только те значения month, для которых total не меньше 20. Отсортируйте по month.

Попробуйте сами

SELECT month,
       -- один SUM(CASE ...) на продукт, плюс итого
FROM sales
GROUP BY month
-- отфильтровать месяцы с total >= 20
ORDER BY month
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Продвинутый уровень

Потренируйтесь самостоятельно: Песочница SQL