Wo wird am meisten bestellt?
Im Montagsmeeting von Nordwind Rad fragt die Geschäftsführung: In welcher Stadt kaufen die meisten Kundinnen und Kunden? Und wie viel Umsatz bringt jede Stadt?
Eine Liste mit sieben Bestellungen können Sie noch im Kopf rechnen. Bei 70.000 Bestellungen nicht mehr. Die Datenbank sortiert, zählt und addiert für Sie.
Am Ende dieser Lektion
Notiz
Ich kann Zeilen in Gruppen zählen und addieren.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| ORDER BY | sortiert das Ergebnis nach einer Spalte | |
| COUNT | zählt Zeilen | COUNT(*) |
| SUM | addiert die Werte einer Spalte | SUM(betrag) |
| GROUP BY | bildet eine Gruppe pro Wert einer Spalte | |
| Alias | ein Name für eine berechnete Spalte | AS summe |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
ORDER BY sortiert das Ergebnis
Ohne Angabe liefert die Datenbank die Zeilen in beliebiger Reihenfolge. Mit ORDER BY betrag sortiert sie nach der Spalte betrag, aufsteigend.
Mit DESC dahinter geht es absteigend, die größte Zahl steht oben. LIMIT 3 schneidet nach drei Zeilen ab. So finden Sie schnell die größten oder kleinsten Einträge.
Probieren Sie es: sortieren
-- Die größten Bestellungen zuerst.
SELECT id, kunde, betrag FROM bestellungen
ORDER BY betrag DESC;
-- Nur die drei kleinsten Bestellungen.
SELECT id, kunde, betrag FROM bestellungen
ORDER BY betrag
LIMIT 3;
COUNT zählt, SUM addiert
Manchmal wollen Sie keine Zeilen sehen, sondern eine Zahl. COUNT(*) zählt die Zeilen. SUM(betrag) addiert alle Werte der Spalte betrag.
Mit AS geben Sie dem Ergebnis einen lesbaren Namen. Ein WHERE davor wirkt zuerst: Es zählt und addiert nur die Zeilen, die übrig bleiben.
Ein Beispiel Schritt für Schritt: bezahlte Bestellungen
| Bestellung | betrag | Bezahlt? | Laufende Summe |
|---|---|---|---|
| 2 | 23 | Ja | 23 |
| 3 | 150 | Ja | 173 |
| 5 | 210 | Ja | 383 |
| 7 | 62 | Ja | 445 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Probieren Sie es: zählen und addieren
-- Wie viele Bestellungen gibt es, und wie viel Umsatz?
SELECT COUNT(*) AS anzahl, SUM(betrag) AS summe
FROM bestellungen;
-- Dasselbe nur für bezahlte Bestellungen.
SELECT COUNT(*) AS anzahl, SUM(betrag) AS summe
FROM bestellungen
WHERE status = 'bezahlt';
GROUP BY rechnet für jede Gruppe einzeln
Die Geschäftsführung will keine Gesamtzahl, sondern eine Zahl je Stadt. Dafür schreiben Sie GROUP BY stadt.
Die Datenbank bildet eine Gruppe für jede Stadt. Dann wendet sie COUNT und SUM auf jede Gruppe einzeln an. Das Ergebnis hat eine Zeile pro Stadt.
Ein Beispiel Schritt für Schritt: GROUP BY stadt
| stadt | Bestellungen in der Gruppe | anzahl | summe |
|---|---|---|---|
| Bremen | 2 und 5 | 2 | 233 |
| Hamburg | 1, 3 und 6 | 3 | 251 |
| Kiel | 4 | 1 | 39 |
| Lübeck | 7 | 1 | 62 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Probieren Sie es: eine Zeile pro Stadt
-- Anzahl und Summe je Stadt.
SELECT stadt, COUNT(*) AS anzahl, SUM(betrag) AS summe
FROM bestellungen
GROUP BY stadt;
-- Dieselbe Abfrage, die größte Summe zuerst.
SELECT stadt, COUNT(*) AS anzahl, SUM(betrag) AS summe
FROM bestellungen
GROUP BY stadt
ORDER BY summe DESC;
Ein häufiger Fehler
Warnung
Viele glauben, WHERE könne auch die fertigen Gruppen prüfen. Das stimmt nicht. WHERE arbeitet vor dem Gruppieren und wählt nur Zeilen. Wollen Sie nur bezahlte Bestellungen je Stadt, steht WHERE vor GROUP BY.