Groub by in SQL?
Ich habe bissle probleme Groub by in SQL zu verstehen. Vorallem in Kombination mit WHERE davor? Kann mir jemand das bitte erklären , vorallem würde ich gerne wissenw wie ich mir das visuell vorstellen kann
Danke im Vorraus
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.