Преобразование строк в столбцы
Часть раздела Продвинутый уровень путешествия по 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 выбирает срез для одного продукта.
Задание
ЛегкоДоступные таблицы и столбцы:
sales:month,product,units
Преобразуйте данные так, чтобы каждая строка соответствовала одному значению month и содержала следующие столбцы:
monthapples: общее количество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
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Продвинутый уровень
Потренируйтесь самостоятельно: Песочница SQL