Kodokon kodokon.com

Aggregieren: COUNT, SUM, AVG, MIN/MAX und GROUP BY

Berechne Summen, Durchschnitte und Statistiken pro Gruppe mit Aggregatfunktionen und GROUP BY.

8 Min. · 3 Fragen

Diese Lektion in Kodokon öffnen

Eine Aggregatfunktion nimmt mehrere Zeilen als Eingabe und liefert einen einzigen Wert: eine Summe, einen Durchschnitt, ein Minimum... Die einfachste ist COUNT(*), die die Zeilen zählt. Sie lässt sich natürlich mit WHERE kombinieren: Die Datenbank filtert zuerst und zählt dann.

SQL
SELECT COUNT(*) FROM books;

SELECT COUNT(*) FROM books WHERE genre = 'sf';
7 Bücher insgesamt, davon 4 Science-Fiction

Die anderen wesentlichen Aggregate wirken auf eine Spalte: SUM(price) summiert, AVG(price) berechnet den Durchschnitt, MIN(year) und MAX(year) finden den kleinsten und den größten Wert. Das Schlüsselwort AS vergibt einen Alias, also einen lesbaren Namen für die berechnete Spalte.

SQL
SELECT SUM(price) AS total FROM books;

SELECT AVG(price) AS avg_sf
FROM books
WHERE genre = 'sf';

SELECT MIN(year), MAX(year) FROM books;
Summe: 52.4; sf-Durchschnitt: 8.375; 1888 und 1965

Und um eine Statistik pro Kategorie zu erhalten? Das ist die Aufgabe von GROUP BY: Die Datenbank gruppiert die Zeilen, die denselben Wert teilen (hier das Genre), und wendet dann das Aggregat auf jede Gruppe an. Das Ergebnis enthält eine Zeile pro Gruppe.

SQL
SELECT genre, COUNT(*) AS nb
FROM books
GROUP BY genre;

SELECT genre, AVG(price) AS avg_price
FROM books
GROUP BY genre;
sf: 4 Bücher; aventure: 2; conte: 1

Wissenscheck

Stelle sicher, dass du die wichtigsten Punkte dieser Lektion behalten hast.

  1. Was liefert SELECT COUNT(*) FROM books;?
    • Die Anzahl der Spalten in der Tabelle
    • Die Anzahl der Zeilen in der Tabelle
    • Die Liste aller Bücher
  2. Welche Funktion berechnet den Durchschnittspreis der Bücher?
    • SUM(price)
    • AVG(price)
    • MEAN(price)
    • MAX(price)
  3. Was erzeugt SELECT genre, COUNT(*) FROM books GROUP BY genre;?
    • Eine Zeile pro Buch, mit seinem Genre
    • Eine einzige Zeile mit der Gesamtzahl der Bücher
    • Eine Zeile pro Genre, mit der Anzahl der Bücher in diesem Genre