Gruppenfunktionen sind in SQL-Funktionen integriert, die in Gruppen von Zeilen arbeiten und einen Wert für die gesamte Gruppe zurückgeben. Diese Funktionen sind: GROUP, HAVING, COUNT, MAX, MIN, AVG, SUM, DISTINCT.
Die GROUP BY- Klausel wird zusammen mit den Gruppenfunktionen verwendet, um die nach einer oder mehreren Spalten gruppierten Daten abzurufen.
Zwischensummen können mit der GROUP BY-Klausel abgerufen werden. Eine Abfrage mit einer GROUP BY-Klausel wird als gruppierte Abfrage bezeichnet, da sie die Daten in der Quellentabelle gruppiert und für jede gebildete Gruppe eine einzelne Zusammenfassungszeile erstellt. Die in GROUP BY angegebenen Spalten werden als Gruppierungsspalten bezeichnet.
Angenommen, eine Verkaufstabelle mit den folgenden Feldern
ID | Produkt | Preis | betrag | Verkäufer
Beispiel:
SELECT SUM (Preis) als Umsatz von FROM Umsatz
Ruft die Summe der insgesamt getätigten Verkäufe ab, der Wert wird den Verkaufssummen zugewiesen
SELECT SUM (sales) FROM sales GROUP BY idemployed
Für jeden Mitarbeiter wird eine Gruppe gebildet und die Summe in den Zeilen jeder Gruppe berechnet. Im vorherigen Beispiel wird eine Liste mit der Summe der Verkäufe jedes einzelnen Mitarbeiters erstellt.
Die Abfrage wäre besser, wenn Sie in die Auswahlliste den Namen des Mitarbeiters aufnehmen, um zu wissen, welchem Mitarbeiter die Summe der Verkäufe entspricht:
SELECT employee.name, SUM (price) AS ventaporemployed VOM Vertrieb, Mitarbeiter Wobei sales.onemployed = employee.onemployed GROUP BY idemployed
In der Auswahlliste SELECT … erscheinen nur:
konstante Werte
Spaltenfunktionen
Spalten gruppieren (Spalten, die in der GROUP BY-Klausel erscheinen)
oder irgendein Ausdruck, der auf den vorhergehenden basiert.
Beispiel: Wir möchten, dass wir Filialen haben und die Summe der Umsätze der Mitarbeiter nach Region und Stadt gruppiert erhalten:
SELECT SUM (Preis) als Verkäufer AB VERKAUF GRUPPE NACH Region, Stadt
Es wird zuerst nach Regionen und innerhalb jeder Region nach Städten gruppiert.
Alle Zeilen, deren Gruppierungsfeld einen Nullwert enthält, bilden eine einzelne Gruppe. Betrachten Sie den Nullwert also als einen beliebigen Wert für Gruppierungszwecke.
Die HAVING-Klausel
Mit der HAVING-Klausel können wir Tabellenzeilen auswählen, die sich aus einer Gruppierungsabfrage ergeben
In der Auswahlbedingung nur:
konstante Werte
Spaltenfunktionen
Spalten gruppieren (Spalten, die in der GROUP BY-Klausel erscheinen)
oder irgendein Ausdruck, der auf den vorhergehenden basiert.
Beispiel: Wir wollen wissen, welche Mitarbeiter mehr als 10.000 Euro verkauft haben
SELECT * AB VERKAUF GROUP BY idemployed MIT AVG (Preis)> 10000
Um zu erhalten, was angefordert wird, müssen wir den durchschnittlichen Umsatz der Mitarbeiter berechnen. Wir müssen die Mitarbeiter nach ID gruppieren und den Durchschnitt für jeden Umsatz pro Mitarbeiter berechnen. Schließlich müssen wir aus dem Ergebnis die Zeilen auswählen, deren Durchschnitt höher als ist 10000
Wie wird eine Gruppenabfrage intern ausgeführt?
Zuerst wird die Datenquellentabelle gemäß der FROM-Klausel gebildet.
Die Zeilen gemäß der WHERE-Klausel werden aus der Datenquelle ausgewählt.
Die Zeilengruppen werden gemäß der GROUP BY-Klausel gebildet.
Für jede Gruppe wird eine Zeile in der resultierenden Tabelle mit den Werten erhalten, die in den GROUP BY-, HAVING-Klauseln und in der Auswahlliste erscheinen.
Die Zeilen gemäß der HAVING-Klausel werden aus der resultierenden Tabelle ausgewählt
Spalten, die nicht in der Auswahlliste erscheinen, werden aus der resultierenden Tabelle entfernt
Die Zeilen der resultierenden Tabelle werden nach der Klausel ***** BY sortiert
Eine Abfrage wird zu einer Gruppenabfrage, sobald GROUP BY, HAVING oder eine Spaltenfunktion angezeigt wird.