Groub by in SQL?

1 Antwort

Ich würde empfehlen, hierzu Youtube-Videos anzuschauen. Das in Textform zu erklären ist ganzschön aufwendig.

Oder vielleicht auch hier: https://www.w3schools.com/sql/sql_groupby.asp

Die Kurzfassung ist:

Where wird angewendet, bevor GroupBy angewendet wird
Having wird angewendet, nachdem GroupBy angewendet wird, hat aber die gleiche Funktion, nämlich die Tabelle nach einer Bedingung zu filtern. (Alles was die Bedingung nicht erfüllt, wird rausgeworfen)

Beispiel für Bedingungen:

Klasse == "1c" oder
Gehalt >= 20000

GroupBy fasst Zeilen deiner Tabelle gruppenweise zusammen.

z.B. wenn du eine Tabelle (Schule, Klasse, Name) hast, kannst du GroupBy verwenden, um die Anzahl der Schüler pro Schule oder pro Klasse zu erhalten (GroupBy Klasse).

1a Tom
1a Lisa
2c Kai

wird zu

1a ?
2c Kai

Wie du am ? siehst, ist unklar was der Wert sein muss, da du die Werte Tom, Lisa hast, aber nurnoch einen Platz um ihn hinzuschreiben. Deshalb musst du für alle Spalten die du ausgibst, die nicht Teil des GroupBys selbst sind (wie hier Klasse), angeben wie mit mehreren Werten umgegangen werden soll.

Das machst man mit sogenannten Aggregatsfunktionen. Beispiel:

Select Klasse, Count(*) From Tablle GroupBy Klasse;

1a, 2
2c, 1

Und es gibt viele weitere Aggregatsfunktionen für die Summe, den Durchschnitt etc.