SQL Grundkurs 1: Die Sprache erlernen

Mit Gruppierung: GROUP BY

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Umsatz je ..., Einsätze nach ..., Stück pro ? - alles eindeutige Hinweise dafür, dass eine Gruppierung benötigt wird. Definieren Sie über die Gruppierung, welche Werte zusammengefasst werden. Die Klausel, die innerhalb der Anweisung dazu verwendet wird, heißt: GROUP BY.

Transkript

Um effektiv Werte zusammenzufassen, benötigen Sie eine Gruppierung. Wie Sie das realisieren, zeige ich Ihnen in diesem Video. Um gruppieren zu können, benötigen wir eine neue Klausel in unserer Anweisung, die Klausel "GROUP BY". Sie wissen immer dann, dass Sie eine GROUP BY-Klausel benötigen, wenn Sie in der Angabe Reizwörter wie je, nach, pro, für jeden, und so weiter, oder Ähnliches vorfinden. Zum Beispiel: Anzahl Einkäufe je Kunde. Das heißt, Sie müssen nach dem Kunden gruppieren. Ich habe hier eine Anweisung stehen, die mir aus der Artikeltabelle den niedrigsten und den höchsten Einkaufspreis, den Mittelwert des Einkaufspreises und die Anzahl liefert. Wenn ich jetzt diese Aufgabenstellung erweitere und sage, ich möchte das Ganze nicht absolut für alle Artikel haben, sondern aufgesplittet je Artikelgruppe. Dann benötige ich eine Gruppierung nach eben genau diesem Kriterium, in dem Fall der Artikelgruppe. Das bedeutet eine neue Klausel: GROUP BY, und diese wird gefolgt, von dem wonach ich zusammenfassen will, in dem Fall der Artikelgruppe, das ist die Spalte "Gruppe". Man muss sich das so vorstellen: Ich hole einmal alle Daten aus der Artikeltabelle und sortiere sie nach der Artikelgruppe. Wenn ich jetzt GROUP BY-Gruppe, in dem Fall nach der Artikelgruppe, realisiere, bedeutet das, dass alle Werte, die in dieser Spalte ident sind, zusammengefasst werden. Das heißt, alle Zeilen, die gleiche Werte haben, liefern mir eine Ergebniszeile. Das heißt, überall wo BE drinnen steht für Besteck, liefert mir eine Zeile EG für elektrische Geräte und so weiter. Wenn ich also diese Anweisung ausführe, dann sehen wir jetzt nicht mehr eine Ergebniszeile, sondern für jede Artikelgruppe. Dieses Ergebnis ist natürlich nicht brauchbar, solange wir die Artikelgruppe nicht anzeigen. Deshalb werde ich natürlich auch hier noch entsprechend die SELECT-Klausel in unserer Anweisung ergänzen und hier noch die Artikelgruppe ergänzen. Nun ist das Ergebnis schon wesentlich besser lesbar. Wir sehen hier die einzelnen Artikelgruppen, und für jede Artikelgruppe sehen wir jetzt ein separates Minimum, ein Maximum, einen Mittelwert und die Anzahl. Sehr schön erkennen wir nun auch, wie die Verteilung der Artikel innerhalb der Artikelgruppen ist, weil wir für jede Artikelgruppe eben die Anzahl angezeigt bekommen. Alle gleichen Werte in der definierten Gruppierung werden also zusammengefasst. Nun, wenn wir eine Gruppierung verwenden, müssen wir allerdings noch Acht geben. Wenn wir jetzt zum Beispiel folgendes realisieren: Ich kopiere mir die Anweisung und ergänze hier zum Beispiel den Einkaufspreis. Nun führe ich die Anweisung aus und bekomme eine Fehlermeldung: "not a group by expression". Dieselbe, oder eine vielleicht sogar sprechendere Fehlermeldung, bekomme ich, wenn ich diese Anweisung im Microsoft SQL-Server ausführe, das mache ich jetzt gleich hier einmal. Und zwar sagt mir die Fehlermeldung, dass die Einkaufspreis-Spalte in der Auswahlliste, damit ist die SELECT-Klausel gemeint, ungültig ist, wenn sie nicht in einer Aggregatfunktion und nicht in einer GROUP BY-Klausel enthalten ist. Ich nenne das das sogenannte "Anti-Heugabel"-Prinzip. Ich möchte Ihnen dieses "Anti-Heugabel"-Prinzip anhand folgender Darstellung erläutern: Sie sehen hier eine Tabelle mit drei Spalten, einer Spalte Name, einer Spalte Wert "1" und Wert "2". In der Spalte Name kommen Namen öfter vor, zum Beispiel zwei Mal Maier, drei Mal Müller und zwei Mal Huber. Dann gibt es in der Spalte Wert "1" und Wert "2" jeweils numerische Werte dazu. Wenn ich nun gruppiere, habe ich ja zwei unterschiedliche Möglichkeiten, den Inhalt einer Spalte zusammenzufassen. Entweder ich gebe ihn in die GROUP BY-Klausel, so wie ich das hier zum Beispiel mit den Namen machen würde. Daraus werden beim Gruppieren aus zwei Maiers ein Maier, aus drei Müller ein Müller und aus zwei Hubers ebenso ein Huber. Außerdem werden Spaltenwerte zusammengefasst, wenn sie mit einer Gruppenfunktion versehen werden. Wenn ich zum Beispiel für die Spalte Wert zwei die Gruppenfunktion Summe vorsehe, dann werden diese Werte zusammengefasst zu einer Summe. Wenn ich also für die Spalte Wert "2" keine dieser beiden Varianten vorsehe, sprich diese Spalte weder in die GROUP BY-Klausel einfüge, noch mit einer Gruppenfunktion versehe, dann wird sie nicht zusammengefasst, sondern bleibt quasi expandiert. Wenn wir nun die Gruppierung vornehmen und die Daten entsprechend unserer zuvor getroffenen Definition zusammengefasst werden, dann würden wir folgendes Ergebnis erzielen: Die drei Müllers werden aufgrund der Gruppierung zu einem Müller zusammengefasst. Aus den Werten "3", "1", "4" wird die Summe "8" gebildet. Für die Spalte zwei, mit dem Namen Wert "2", haben wir die Werte "3", "7" und "9", aber nicht zusammengefasst weder durch eine Gruppierung noch durch eine Summe. Das heißt, wenn wir uns das Ergebnis so ansehen, dann wirkt das so, als würde diese Zeile am Ende auseinandergehen, wie eine Heugabel, da hier mehrere Werte zu einer Zeile vorhanden sind. Diese Darstellungsform ist aber in einer Tabelle nicht möglich. Sie können nur zeilenweise Ergebnisse darstellen. Sie können nicht ein Ergebnis sozusagen wie eine Heugabel auseinandergehen lassen. Und das ist der Grund, warum ich dieses Prinzip das "Anti-Heugabel"-Prinzip nenne. Weil das auseinander Gehen einer Zeile nicht möglich ist. Und das ist der Grund, warum wir Fehlermeldungen bekommen, wenn wir Gruppenfunktionen und GROUP BY verwenden und zusätzlich in der SELECT-Klausel Spalten anführen, die weder in der GROUP BY-Klausel enthalten sind, noch mit einer Gruppenfunktion versehen sind.

SQL Grundkurs 1: Die Sprache erlernen

Arbeiten Sie sich in die Grundlagen der Datenbanksprache SQL am Beispiel von Microsoft SQL Server, Oracle und MySQL ein und lassen Sie sich die praktische Nutzung erklären.

14 Std. 40 min (112 Videos)
Derzeit sind keine Feedbacks vorhanden...

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!