Prozentualer Anteil am Gesamtwert
Teil des Abschnitts Über die Grundlagen hinaus der SQL-Journey von Coddy. Lektion 24 von 27.
Der Anteil jeder Zeile am Ganzen ist ein Klassiker der Fensterfunktionen: Teilen Sie den Wert der Zeile durch die SUM derselben Spalte über das gesamte Fenster.
SELECT product, revenue,
revenue * 100.0 / SUM(revenue) OVER () AS pct
FROM salesEin leeres OVER () bedeutet „die gesamte Ergebnismenge“. Fügen Sie stattdessen ein PARTITION BY hinzu, um den Anteil innerhalb einer Gruppe zu berechnen (z. B. OVER (PARTITION BY category) für den Anteil innerhalb jeder Kategorie).
Multiplizieren Sie mit 100.0 (nicht 100), damit die Division ein Float bleibt. Andernfalls würde die Ganzzahldivision von SQLite kleine Anteile auf Null abrunden.
Aufgabe
EinfachVerfügbare Tabellen und Spalten:
<strong>sales</strong>:<strong>category</strong>,<strong>product</strong>,<strong>revenue</strong>
Geben Sie für jede Zeile Folgendes zurück:
categoryproductrevenuepct_of_category: der Anteil des Produkts am Umsatz innerhalb seiner Kategorie, gerundet auf 1 Dezimalstelle
Verwenden Sie ein PARTITION BY im Window. Sortieren Sie nach category, dann nach pct_of_category absteigend.
Probier es selbst
SELECT category, product, revenue,
-- pct als Anteil innerhalb der Kategorie, PARTITION BY verwenden
FROM sales
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 CASEPivotieren von Zeilen zu SpaltenZusammenfassung – Traffic-Quellen6Analyse-Rezepte
Top-N pro GruppeProzentualer Anteil am GesamtwertLaufende SummeNur eine Zeile pro Schlüssel behaltenZusammenfassung – Top-KundenÜbe selbstständig: SQL-Playground