SUM mit CASE
Teil des Abschnitts Über die Grundlagen hinaus der SQL-Journey von Coddy. Lektion 13 von 27.
Dieselbe Idee funktioniert mit SUM: und sie ist sogar noch flexibler. Das CASE kann für übereinstimmende Zeilen 1 und für alles andere 0 zurückgeben oder einen beliebigen numerischen Wert zurückgeben, um Zeilen unterschiedlich zu gewichten.
SELECT
SUM(CASE WHEN status = 'active' THEN 1 ELSE 0 END) AS active_count,
SUM(CASE WHEN plan = 'pro' THEN amount ELSE 0 END) AS pro_revenue
FROM usersSUM(CASE … THEN 1 ELSE 0 END) und COUNT(CASE … THEN 1 END) liefern beim Zählen dasselbe Ergebnis; wähle den Stil, den dein Team bevorzugt.
Aufgabe
EinfachVerfügbare Tabellen und Spalten:
transactions:id,category,type,amount
type ist entweder 'sale' oder 'refund'. Gib für jede category Folgendes zurück:
categorynet_revenue: Summe der Verkaufsbeträge minus Summe der Erstattungsbeträge
Berechne net_revenue in einem einzigen SUM(CASE …)-Ausdruck, wobei Erstattungen mit ihrem Betrag als negative Zahl einfließen. Sortiere nach net_revenue absteigend.
Probier es selbst
SELECT category,
-- ein SUM(CASE ...), bei dem Rückerstattungen negativ zählen
FROM transactions
GROUP BY category
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