Menu
Coddy logo textTech

COUNT mit CASE

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

Du kannst einen CASE-Ausdruck innerhalb einer Aggregatfunktion verwenden. Der Trick besteht darin, dass COUNT NULL ignoriert. Daher zählt ein CASE ohne ELSE nur Zeilen, die die Bedingung erfüllen.

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 die gesamte Abfrage nicht gefiltert haben. Das ist der Trick hinter jeder Multi-Metrik-Dashboard-Abfrage, die du jemals schreiben wirst.

challenge icon

Aufgabe

Einfach

Verfügbare Tabellen und Spalten:

  • orders: id, customer_id, status

Gib für jede customer_id Folgendes zurück:

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

Gib nur Kunden zurück, die mindestens eine stornierte Bestellung haben. Sortiere nach customer_id.

Probier es selbst

SELECT customer_id,
       COUNT(*) AS total,
       -- versendet, storniert mit COUNT(CASE ...)
FROM orders
GROUP BY customer_id
-- auf Kunden mit mindestens einer Stornierung filtern
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