Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

Grundlagen der Programmierung: Datenbanken

Gruppierungsfunktionen

Testen Sie unsere 2015 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Gruppierungsfunktionen ermöglichen es, in SQL bestimmte Berechnungen durchzuführen, denen Bedingungen hinzugefügt werden können. Dadurch lassen sich Zeilen zählen sowie Maximal-, Minimum- und Mittelwert und Summen berechnen.

Transkript

Als nächstes stehen einige weitere SQL Schlüsselwörter auf dem Plan, die in die Kategorie Aggregatfunktion oder Gruppierungsfunktion fallen. Diese führen eine bestimmte Berechnung aus und geben einen einzelnen Wert zurück. Was das für ein Einzelwert ist hängt dann ganz von der verwendeten Aggregatfunktion ab. Werfen wir mal einen Blick darauf. Bisher haben Sie eine einfache SELECT-Anweisung wie diese hier kennengelernt, die alles zurück gibt, alle ihre Spalten, alle ihre Zeilen, ob es sich nun um fünf Mitarbeiter, um 5000 oder 500.000 handelt. Was ist wenn ich lediglich wissen will wie viele Zeilen diese Tabelle enthält, sonst brauche ich nichts weiter. Ich möchte nur wissen wie viele Zeilen. Hierfür bietet SQL eine Aggregatfunktion namens COUNT an. Nun brauche ich nur noch "SELECT *" in "SELECT COUNT(*)" zu ändern, um alle Zeilen in der "Employee" Tabelle zu zählen. Wenn ich diese Anweisung ausführe, zählt sie alle Zeilen und gibt mir einen einzigen Wert zurück. In diesem Fall sind es 547 Zeilen. Natürlich können Sie auch mit einer WHERE-Klausel die Ergebnisse einschränken, um lediglich die Anzahl von Mitarbeiter mit einem Gehalt von größer als 50000 zu zählen. Das Ergebnis sieht dann natürlich anders aus. Alles was COUNT für uns tut, ist lediglich die Anzahl der Zeilen für diese bestimmte Bedingung zu zählen. Manchmal liefert aber COUNT nicht das, was Sie brauchen. Im vorigen Video zum Sortieren habe ich das Beispiel hier verwendet, um Produkte auszuwählen und sie mit einer "ORDER BY"-Klausel nach "ListPrice" absteigend zu sortieren. Wie verhält es sich nun, wenn ich das Ganze nur ausgeführt habe, um den maximalen Listenpreis in Erfahrung zu bringen? Anstatt mit einer "ORDER BY" Klausel absteigend zu sortieren und sich dann nur die oberste Ergebniszeile anzusehen, könnten Sie auch einfach SELECT MAX ausführen. Anstatt nun SELECT MAX(*) auszuführen, das heißt, SELECT MAX für alles, bin ich nur an einer bestimmten Spalte interessiert. Welches ist der größte Wert von "ListPrice" in der gesamten Produkttabelle? In diesem Falle erhalten wir 699 zurück. Wenn es nun schon eine Funktion MAX für das Maximum gibt, dann werden Sie schon erraten, gibt es auch eine Funktion MIN für das Minimum und außerdem haben wir noch AVG für Average, also für den Mittelwert. Diese Funktion addiert zunächst sämtliche Werte in der entsprechenden Spalte und dividiert dann die Summe durch die Anzahl der Zeilen und gibt diesen einzelnen Wert dann zurück. Neben COUNT, AVERAGE und so weiter, gibt es auch noch die Funktion SUM. Anstatt die Zeilen zu zählen, summiert SUM alle Werte. Diese Anweisung sucht also nach einer "CustomerID", die 854 beträgt . und ruft dann alle Zeilen für diesen Kunden ab, und dann werden alle Werte in dieser Spalte "TotalDue" zusammen addiert und das Ergebnis ausgegeben. Aber wir können noch mehr damit anstellen. Wie schon gezeigt können wir mit SELECT COUNT(*) die Anzahl der Zeilen ermitteln. Soweit so gut. Das geht sogar auch in Verbindung mit einer WHERE-Klausel. In diesem Fall zählen wir die Anzahl der Zeilen, in denen die Farbe gleich "Red" ist und erhalten einen Ergebniswert zurück. Doch wenn ich nicht nur die Anzahl von roten Produkten, sondern von allen anderen Produkten wissen möchte, dann wird es ein bisschen schwierig. Also wenn ich wissen möchte wie viele schwarze, wie viel silberne, wie viele goldene Produkte und so weiter ich habe, dann könnte ich zwar jedes Mal diese Anweisung hier erstellen und hinten die Farbe ändern, aber das ist nicht nur umständlich, sondern es setzt auch voraus, dass wir bereits alle vorhandenen Farben kennen. Zudem könnten wir jederzeit eine neue Farbe bekommen, und ich möchte nicht jedes Mal eine neue WHERE-Klausel einfügen, nur weil wir ein neues Produkt im Sortiment haben. Ich möchte also sowohl die Anzahl, als auch die Farbspalte aus dieser Tabelle abrufen und die Ergebnisse dann später aber nach der Farbe gruppieren. Nun könnte ich versucht sein so etwas wie das hier zu schreiben und die Anzahl und die Farbspalte auszuwählen. Doch würde das SQL durcheinander bringen. SQL kann entweder die einzelne Anzahl aller Zeilen, oder alle Mehrfachwerte in der Spalte liefern. Doch es versteht nicht, wie wir beide auf einmal zurückgeben können. Die Lösung liegt in einem weiteren SQL-Schlüsselwort, das für die Aggregatfunktion prädestiniert ist nämlich, GROUP BY. Ich wähle hier also mit "GROUP BY Color" aus. Wenn wir diese SQL-Abfrage ausführen, erhalten wir etwa so etwas, oder etwas sehr ähnliches. Gezählt werden alle Produkte für eine bestimmte Farbe, da wir ja nach einer Farbe gruppieren wollen. Eine "GROUP BY" Klausel ist eigentlich nur sinnvoll in Verbindung mit einer Aggregatfunktion wie SUM oder COUNT oder irgendetwas Ähnliches. Andernfalls braucht es "GROUP BY" eigentlich nicht. Umgekehrt können Sie natürlich Aggregatfunktionen durchaus auch für sich alleine verwenden, sofern Sie die Ergebnisse nicht gruppieren möchten. Denn meistens erwarten Sie von ihrer Abfrage ja nur einen einzigen Wert, außer wenn Sie diese Ergebnisse mit "GROUP BY" kategorisieren wollen.

Grundlagen der Programmierung: Datenbanken

Fangen Sie ganz von vorne an und erfahren Sie alles über die Grundlagen zu Datenbanken und deren Einsatzzwecke, um danach eigene Lösungen und Anwendungen zu entwickeln.

3 Std. 6 min (39 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!