Przekształcanie wierszy w kolumny
Część sekcji Poza podstawami ścieżki SQL w Coddy. Lekcja 14 z 27.
Połącz agregację warunkową z GROUP BY, aby przekształcić wiersze w kolumny. To odpowiednik tabeli przestawnej w arkuszu kalkulacyjnym w SQL.
Załóżmy, że sales zawiera wiersze w formacie (month, product, units). Aby zobaczyć jeden wiersz na miesiąc i jedną kolumnę na produkt:
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 monthKażda grupa GROUP BY, którą widzi SUM(CASE …), obejmuje wiersze z jednego miesiąca; CASE wybiera część dotyczącą jednego produktu.
Wyzwanie
ŁatwyDostępne tabele i kolumny:
sales:month,product,units
Przekształć dane tak, aby każdy wiersz odpowiadał jednemu month i zawierał następujące kolumny:
monthapples: łączna liczbaunitsdla produktu'apples'w danym miesiącubananas: to samo dla'bananas'cherries: to samo dla'cherries'total: łączna liczbaunitsze wszystkich produktów w danym miesiącu
Zwróć tylko te miesiące, w których total wynosi co najmniej 20. Posortuj według month.
Spróbuj swoich sił
SELECT month,
-- jedno SUM(CASE ...) na produkt, plus suma całkowita
FROM sales
GROUP BY month
-- odfiltruj miesiące, dla których suma całkowita >= 20
ORDER BY month
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Poza podstawami
3Agregacja warunkowa
COUNT z CASESUM z CASEPrzekształcanie wierszy w kolumnyPodsumowanie — źródła ruchuPoćwicz samodzielnie: Edytor online SQL