Zeilen zählen
Bisher haben deine Abfragen Zeilen gezeigt: eine Zeile des Ergebnisses für jede Zeile der Tabelle, die sie gefunden haben. Oft willst du aber stattdessen eine einzige Zahl. Wie viele Kunden hat der Shop? Wie viele Spiele hat er verkauft? Wie viel hat er verdient? Für solche Fragen hat SQL Aggregatfunktionen. Eine Aggregatfunktion nimmt viele Zeilen und macht daraus einen Wert.
Die einfachste ist COUNT(*). Sie zählt Zeilen:
SELECT COUNT(*)
FROM kunden;| COUNT(*) |
|---|
| 14 |
Das Ergebnis hat eine Zeile und eine Spalte, und die Spalte heißt wie das, was du getippt hast, COUNT(*). Mit AS kannst du ihr einen besseren Namen geben, wie du es in Lektion 2 bei Berechnungen getan hast:
SELECT COUNT(*) AS anzahl_kunden
FROM kunden;| anzahl_kunden |
|---|
| 14 |
COUNT(*) funktioniert zusammen mit WHERE: Die Datenbank findet zuerst die Zeilen, die die Bedingung erfüllen, und zählt dann nur diese. So viele Kunden wohnen in Hamburg:
SELECT COUNT(*) AS hamburg_kunden
FROM kunden
WHERE stadt = 'Hamburg';| hamburg_kunden |
|---|
| 4 |
Eine Abfrage mit einer Aggregatfunktion liefert auch dann eine Zeile, wenn keine Zeile die Bedingung erfüllt. Der Shop hat keine Kunden aus Köln, also sagt COUNT(*) 0:
SELECT COUNT(*) AS koeln_kunden
FROM kunden
WHERE stadt = 'Köln';| koeln_kunden |
|---|
| 0 |
Der Stern in COUNT(*) steht für ganze Zeilen: Es zählt sie, egal was in ihnen steht. In der nächsten Übung siehst du, was passiert, wenn du stattdessen eine Spalte in die Klammern schreibst. Und außer zu zählen können Aggregatfunktionen addieren, den Durchschnitt bilden und den kleinsten und den größten Wert finden; du lernst sie alle in dieser Lektion kennen.
Typischer Fehler: eine Spalte neben COUNT(*). Das Ergebnis von SELECT name, COUNT(*) FROM kunden; hat eine Zeile, welchen der 14 Namen soll es also zeigen? Die meisten Datenbanken melden einen Fehler. SQLite nicht; es zeigt den Namen eines der Kunden:
| name | COUNT(*) |
|---|---|
| Emma Becker | 14 |
Es sieht aus, als hätte Emma Becker 14 von etwas, und das ist Unsinn. Frage vorerst entweder nach Zeilen oder nach einer Zahl, nicht nach beidem in einer Abfrage. Später in dieser Lektion lernst du, wie du zum Beispiel die Kunden jeder Stadt zählst.
So schreibst du es:
Anweisungen
- 1
Zähle alle Bestellungen in der Tabelle
bestellungen. Nenne die Spalteanzahl_bestellungen:anzahl_bestellungen 30 - 2
Zähle darunter nur die erstatteten Bestellungen, also die, deren
status'erstattet'ist. Nenne die Spalteerstattete_bestellungen:erstattete_bestellungen 2 - 3
Und zähle die Spiele, die 2025 erschienen sind, in einer Spalte
erschienen_2025:erschienen_2025 4