Zum Inhalt
Alle Apps

GROUP BY als Fächer

Über diese App

Zusammenfassen und gruppieren an der Tabelle tools aus der Vorlesung: avg, sum, min, max und count machen aus vielen Zeilen eine, GROUP BY tag sortiert die Zeilen in Fächer, und aus jedem Fach wird eine Ergebniszeile. WHERE siebt Zeilen vor dem Gruppieren aus, HAVING streicht ganze Fächer; Ablauf Schritt für Schritt in der Reihenfolge FROM, WHERE, GROUP BY, HAVING, SELECT. Dazu count(*) gegen count(tag) mit NULL-Zeile und der typische Fehler: eine Spalte, die weder gruppiert noch aggregiert ist.

Mit Erklärmodus: Ein KI-Tutor führt dich durch die App, zeigt in der Szene, worauf es ankommt, und beantwortet deine Fragen.

Zusammenfassen und gruppieren in SQL

Aggregatfunktionen wie avg, sum, min, max und count fassen viele Werte zu einem zusammen. Ohne GROUP BY bildet die ganze Tabelle eine Gruppe, das Ergebnis hat eine Zeile. Mit GROUP BY entstehen so viele Gruppen, wie es verschiedene Werte in der Gruppierungsspalte gibt, und jede Gruppe wird zu einer Ergebniszeile. WHERE filtert einzelne Zeilen, bevor gruppiert wird; HAVING filtert ganze Gruppen danach. Ausgeführt wird in der Reihenfolge FROM, WHERE, GROUP BY, HAVING, SELECT, obwohl SELECT zuerst geschrieben wird.

Was die App zeigt

Links stehen die Abfrage und die Tabelle tools mit fünf Werkzeugen (name, weight, price, tag). Beim Ausführen fliegen die Zeilen nach ihrem tag in Fächer; ein Fach entsteht erst, wenn die erste passende Zeile ankommt. HAVING count(*) > 1 streicht das Fach mit nur einer Zeile, WHERE siebt vorher einzelne Zeilen aus. Zum Schluss fällt jedes Fach zu einer Ergebniszeile zusammen, etwa A 92.5 | 860, B 77.5 | 1123, C 93.0 | 444.

Selbst ausprobieren

Wähle Beispielabfragen oder setze SELECT, WHERE, GROUP BY und HAVING selbst zusammen und geh die Ausführung Schritt für Schritt durch. Tippe auf einen tag-Wert in der Tabelle, um ihn zu ändern, und beobachte, wie sich die Zahl der Fächer ändert. Schalte eine Zeile mit NULL dazu und vergleiche count(*), count(tag) und count(distinct tag).

Häufige Fragen

Was ist der Unterschied zwischen WHERE und HAVING?
WHERE prüft jede einzelne Zeile, bevor gruppiert wird. HAVING prüft ganze Gruppen, nachdem gruppiert und aggregiert ist, und kann deshalb Bedingungen wie count(*) > 1 oder sum(price) > 1000 enthalten.
Was zählt count(spalte) im Unterschied zu count(*)?
count(*) zählt alle Zeilen. count(spalte) zählt nur die Zeilen, in denen die Spalte nicht NULL ist. Verschiedene Werte zählt erst count(distinct spalte).
Warum muss jede Spalte in SELECT gruppiert oder aggregiert sein?
In einer Gruppe stehen oft mehrere Zeilen mit verschiedenen Werten. Eine Spalte ohne Aggregatfunktion hätte dann keinen eindeutigen Wert. SQLite liefert in diesem Fall stillschweigend den Wert irgendeiner Zeile der Gruppe, PostgreSQL und MySQL in der Standardeinstellung melden einen Fehler.
Was zeigt die App GROUP BY als Fächer?
Eine kleine Tabelle, deren Zeilen beim Ausführen in Fächer fliegen, Schritt für Schritt in der Reihenfolge FROM, WHERE, GROUP BY, HAVING, SELECT, mit Aggregatfunktionen, gestrichenen Gruppen und dem typischen Fehler einer nicht gruppierten Spalte.

Fach: Informatik

Mehr aus Informatik

Eine VisuApp von heyprof: interaktiv, kostenlos im Browser, ohne Anmeldung. Was ist eine VisuApp? · Alle Apps