Menu
Coddy logo textTech

COUNT mit CASE

Teil des Abschnitts Über die Grundlagen hinaus der SQL-Journey von Coddy. Lektion 12 von 27.

Sie können einen CASE-Ausdruck innerhalb eines Aggregats verwenden. Der Trick dabei ist, dass COUNT den Wert NULL ignoriert, sodass ein CASE ohne ELSE nur Zeilen zählt, die der Bedingung entsprechen.

SELECT
    COUNT(*) AS total,
    COUNT(CASE WHEN status = 'active' THEN 1 END) AS active_count
FROM users

Jetzt ist active_count die Anzahl der 'active' Zeilen, obwohl wir nicht die gesamte Abfrage gefiltert haben. Dies ist der Trick hinter jeder Multi-Metrik-Dashboard-Abfrage, die Sie jemals schreiben werden.

challenge icon

Aufgabe

Einfach

Verfügbare Tabellen und Spalten:

  • <strong>orders</strong>: <strong>id</strong>, <strong>customer_id</strong>, <strong>status</strong>

Geben Sie für jede customer_id Folgendes zurück:

  • customer_id
  • total: Gesamtzahl der Bestellungen, die dieser Kunde aufgegeben hat
  • shipped: Anzahl, bei denen status = 'shipped' ist
  • cancelled: Anzahl, bei denen status = 'cancelled' ist

Geben Sie nur Kunden zurück, die mindestens eine stornierte Bestellung haben. Sortieren Sie nach customer_id.

Probier es selbst

SELECT customer_id,
       COUNT(*) AS total,
       -- shipped, cancelled unter Verwendung von COUNT(CASE ...)
FROM orders
GROUP BY customer_id
-- Filtere nach Kunden mit mindestens einer Stornierung
ORDER BY customer_id
quiz iconTeste dich selbst

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

Übe selbstständig: SQL-Playground