Zeilen in Spalten umwandeln
Teil des Abschnitts Über die Grundlagen hinaus der SQL-Journey von Coddy. Lektion 14 von 27.
Kombiniere bedingte Aggregation mit GROUP BY, um Zeilen in Spalten umzuwandeln. Das ist die SQL-Version einer Pivot-Tabelle.
Angenommen, sales enthält Zeilen wie (month, product, units). Um eine Zeile pro Monat mit einer Spalte pro Produkt anzuzeigen:
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 monthDer GROUP BY-Bucket, den jedes SUM(CASE …) sieht, sind die Zeilen für einen Monat; das CASE wählt den Ausschnitt für ein Produkt aus.
Aufgabe
EinfachVerfügbare Tabellen und Spalten:
sales:month,product,units
Pivotieren Sie die Daten, sodass jede Zeile einen month mit diesen Spalten darstellt:
monthapples: gesamteunits-Anzahl für das Produkt'apples'in diesem Monatbananas: entsprechend für'bananas'cherries: entsprechend für'cherries'total: gesamteunits-Anzahl über alle Produkte in diesem Monat
Geben Sie nur Monate zurück, deren total mindestens 20 beträgt. Sortieren Sie nach month.
Probier es selbst
SELECT month,
-- ein SUM(CASE ...) pro Produkt, plus Gesamt
FROM sales
GROUP BY month
-- filtere auf Monate mit total >= 20
ORDER BY month
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Über die Grundlagen hinaus
3Bedingte Aggregation
COUNT mit CASESUM mit CASEZeilen in Spalten umwandelnRückblick – Traffic-QuellenÜbe selbstständig: SQL-Playground