Einführung in die GROUP BY-Klausel in SQL
Für die Fälle, in denen wir die Zeilen mit dem gleichen Wert gruppieren müssen, kommt die Group By-Klausel ins Bild. Die GROUP BY-Klausel ist ein Befehl in SQL, der diesen Vorgang ausführt.
Der wichtige Punkt, an den Sie sich erinnern sollten, ist, dass die GROUP BY-Klausel in der SELECT-Anweisung in der Abfrage verwendet wird, nachdem die WHERE-Klausel verwendet wurde.
Syntax
Die Syntax für die Group By-Klausel lautet:
SELECT column_name1, column_name2, …
FROM table_name
WHERE conditions
GROUP By column_name1, column_name2, …
ORDER By column_name1, column_name2, …;
Erklärung der Syntax
- SELECT-Anweisung - SQL-Befehlsabfrage
- Tabellenname - Der Name der Datenbanktabelle, auf die verwiesen wird
- bedingungen - beziehen sich auf die zu prüfenden bedingungen
- GROUP BY - Klausel zum Gruppieren derselben Zeilen
- ORDER BY - Wird immer nach der Group By-Klausel verwendet, um die Zeilen in aufsteigender oder absteigender Reihenfolge anzuordnen. Dies ist eine optionale Bedingung.
Wie funktioniert die GROUP BY-Klausel in SQL?
Um die Funktionsweise der Group By-Klausel zu verstehen, nehmen wir ein Beispiel. Stellen Sie sich eine Tabelle mit dem Namen EMPLOYEE vor, die die grundlegenden Details des Mitarbeiters wie Name, Alter, Telefonnummer, Geburtsdatum, Geschlecht, Adresse, E-Mail-ID usw. enthält.
Mitarbeitertabelle
Name | Alter | Telefon | Geschlecht | |
John | 23 | 123 | Männlich | |
Kann | 22 | 456 | Weiblich | |
Ana | 45 | 644 | Weiblich | |
Töpfe | 57 | 3456 | Weiblich | |
Res | 45 | 456 | Weiblich | |
Bräunen | 78 | 2456 | Männlich | |
Ran | 34 | 5899 | Männlich | |
Wan | 55 | 7789 | Weiblich | |
Tung | 32 | 5689 | Männlich | |
Chung | 21 | 4678 | Männlich |
Angenommen, der MITARBEITER hat ungefähr 10 Einträge.
Lassen Sie uns zuerst die verschiedenen Werte von „Geschlecht“ aus dieser Tabelle entnehmen. Die Abfrage, die uns hilft, unser Ziel zu erreichen, wäre:
SELECT gender FROM EMPLOYEE;
Dies gibt uns die folgenden Werte-
Geschlecht |
Männlich |
Weiblich |
Weiblich |
Weiblich |
Weiblich |
Männlich |
Männlich |
Weiblich |
Männlich |
Männlich |
Das Problem ist hier die Redundanz der Werte, dh wie wir sehen können, gibt es nur zwei eindeutige Werte von Geschlechtern in der Tabelle, aber die Ausgabe gibt uns nicht nur die eindeutigen Werte, sondern alle Werte, selbst wenn sie sich wiederholen.
Um also nur die eindeutigen Werte aus der Tabelle zu erhalten, verwenden wir die folgende Abfrage:
SELECT gender FROM EMPLOYEE GROUP BY gender;
Das Ergebnis, das wir nach dem Ausführen dieser Abfrage erhalten, ist:
Geschlecht |
Männlich |
Weiblich |
Die Gruppierung nach gruppiert dieselben Werte in den Zeilen und gibt nur einen einzelnen Eintrag oder eine einzelne Zeile für sie zurück, wie dies bei den Zeilen "Männlich" und "Weiblich" in der Tabelle der Fall war. Dies führte zu nur zwei eindeutigen Werten, die in der Spalte "Geschlecht" vorhanden waren, z. Weiblich und männlich.
Nehmen wir nun ein weiteres Beispiel einer Tabelle, die die Details der Abteilung enthält, der jeder dieser Mitarbeiter zugeordnet ist. Wir nennen dies eine Employee_Department-Tabelle.
Mitarbeiterabteilungstabelle
Name | hod | Abteilung |
John | hod1 | Bedienung |
Kann | hod2 | Finanzen |
Ana | hod1 | Bedienung |
Töpfe | hod2 | Finanzen |
Res | hod3 | Technik |
Bräunen | hod5 | Unterstützung |
Ran | hod3 | Bedienung |
Wan | hod3 | Technik |
Tung | hod3 | Finanzen |
Chung | hod5 | HR |
Lassen Sie uns nun die folgende Abfrage ausführen und nach dem Ergebnis suchen -
SELECT hod, department FROM Employee_Department GROUP BY hod, department;
Die Ausführung dieser Abfrage ruft das folgende Ergebnis ab:
hod | Abteilung |
hod1 | Bedienung |
hod2 | Finanzen |
hod3 | Technik |
hod5 | Unterstützung |
hod3 | Bedienung |
hod3 | Finanzen |
hod5 | HR |
Die GROUP BY-Klausel wirkt sich sowohl auf das HOD als auch auf die Abteilung aus, um nach den eindeutigen Zeilen im oben genannten Szenario zu suchen. Es wird die Kombination von hod und department mit anderen Einträgen von hod und department verglichen, um die Eindeutigkeit zu ermitteln. Wenn der Hod derselbe ist, aber die Abteilung unterschiedlich ist, wird diese Zeile als eine eindeutige behandelt. Wenn das Hod und die Abteilung für mehr als eine Zeile identisch sind, wird der doppelte Eintrag nicht erstellt und nur eine Zeile wird angezeigt.
GROUP BY-Klauseloperationen
Wir können die Group By-Klausel mit mehreren Gruppierungs- und Aggregatfunktionen verwenden. Nehmen wir ein paar Beispiele anhand der beiden oben genannten Tabellen: EMPLOYEE und Employee_Department.
Beispiel 1
Ermittlung der Anzahl männlicher und weiblicher Mitarbeiter im Unternehmen.
SELECT gender, COUNT(`name`) FROM EMPLOYEE GROUP BY gender;
Die Ausführung dieser Abfrage ruft das folgende Ergebnis ab:
COUNT ('name') | Geschlecht |
5 | Männlich |
5 | Weiblich |
Beispiel # 2
Abrufen der Anzahl der Abteilungen im Unternehmen in absteigender Reihenfolge der Anzahl.
SELECT department, COUNT(`name`) FROM Employee_Department GROUP BY department ORDER BY COUNT(name) DESC;
Die Ausführung dieser Abfrage ruft das folgende Ergebnis ab:
COUNT ('name') | Abteilung |
3 | Bedienung |
3 | Finanzen |
2 | Technik |
1 | Unterstützung |
1 | HR |
Beispiel # 3
Abrufen der Anzahl der verschiedenen Abteilungen in der Firma in absteigender Reihenfolge der Anzahl.
SELECT hod, department, COUNT(`name`) FROM Employee_Department GROUP BY hod, department ORDER BY COUNT(name) DESC;
Die Ausführung dieser Abfrage ruft das folgende Ergebnis ab:
COUNT ('name') | hod | Abteilung |
2 | hod1 | Bedienung |
2 | hod2 | Finanzen |
2 | hod3 | Technik |
1 | hod5 | Unterstützung |
1 | hod3 | Bedienung |
1 | hod3 | Finanzen |
1 | hod5 | HR |
Die HAVING-Klausel in SQL
Die Verwendung der HAVING-Klausel mit der Group By-Klausel beschränkt das Ergebnis der Abfrage auf die Zeilen mit dem in der Having-Klausel angegebenen Wert.
Wenn Sie dies anhand eines Beispiels verstehen, wird es einfacher -
Beispiel # 4
SELECT * FROM EMPLOYEE GROUP BY gender HAVING gender = “Female”;
Die Ausführung dieser Abfrage ruft das folgende Ergebnis ab:
Name | Alter | Telefon | Geschlecht | |
Kann | 22 | 456 | Weiblich | |
Ana | 45 | 644 | Weiblich | |
Töpfe | 57 | 3456 | Weiblich | |
Res | 45 | 456 | Weiblich | |
Wan | 55 | 7789 | Weiblich |
Beispiel # 5
SELECT * FROM Employee_Department GROUP BY department HAVING department = “Finance”;
Die Ausführung dieser Abfrage ruft das folgende Ergebnis ab:
Name | hod | Abteilung |
Kann | hod2 | Finanzen |
Töpfe | hod2 | Finanzen |
Tung | hod3 | Finanzen |
Fazit
Mit der GROUP BY-Klausel und der SELECT-Anweisung können wir Zeilen mit denselben Werten zusammen mit der Verwendung von Aggregatfunktionen, Konstanten und Ausdrücken gruppieren.
Empfohlene Artikel
Dies ist eine Anleitung zur GROUP BY-Klausel in SQL. Hier wird die Funktionsweise der GROUP BY-Klausel in SQL anhand von Beispielen und Employee-Tabellen erläutert. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -
- SQL-Einfügeabfrage
- SQL-Ansichten
- Datenbank in SQL
- Transaktionen in SQL