logo

SQL | GRUPPIERE NACH

Die GROUP BY-Anweisung in SQL wird verwendet, um identische Daten mit Hilfe einiger Funktionen in Gruppen anzuordnen. Das heißt, wenn eine bestimmte Spalte in verschiedenen Zeilen dieselben Werte aufweist, werden diese Zeilen in einer Gruppe angeordnet.

Merkmale

  • Die GROUP BY-Klausel wird mit der SELECT-Anweisung verwendet.
  • In der Abfrage wird die GROUP BY-Klausel nach dem platziert WO Klausel.
  • In der Abfrage wird die GROUP BY-Klausel vor platziert BEFEHL BY-Klausel, falls verwendet.
  • In der Abfrage wird die Group BY-Klausel vor der Taking-Klausel platziert.
  • Platzieren Sie die Bedingung in der Have-Klausel.

Syntax :

SELECT Spalte1, Funktionsname(Spalte2)



VON Tabellenname

WHERE-Bedingung

GROUP BY Spalte1, Spalte2

ORDER BY Spalte1, Spalte2;

Erläuterung:

  1. Funktionsname : Name der verwendeten Funktion, zum Beispiel SUM() , AVG().
  2. Tabellenname : Name der Tabelle.
  3. Zustand : Zustand: Gebraucht.

Nehmen wir an, wir haben zwei Tabellen: „Mitarbeiter“ und „Student“. Die Beispieltabelle sieht wie folgt aus. Nachdem wir zwei Tabellen hinzugefügt haben, werden wir einige spezifische Operationen ausführen, um mehr über GROUP BY zu erfahren.

Mitarbeitertabelle:

CREATE TABLE emp ( emp_no INT PRIMARY KEY, name VARCHAR(50), sal DECIMAL(10,2), age INT );>

Fügen Sie einige zufällige Daten in eine Tabelle ein und dann führen wir einige Operationen in GROUP BY aus.

Abfrage:

INSERT INTO emp (emp_no, name, sal, age) VALUES (1, 'Aarav', 50000.00, 25), (2, 'Aditi', 60000.50, 30), (3, 'Amit', 75000.75, 35), (4, 'Anjali', 45000.25, 28), (5, 'Chetan', 80000.00, 32), (6, 'Divya', 65000.00, 27), (7, 'Gaurav', 55000.50, 29), (8, 'Isha', 72000.75, 31), (9, 'Kavita', 48000.25, 26), (10, 'Mohan', 83000.00, 33);>

Ausgabe:

Schülertisch:

Abfrage:

CREATE TABLE student ( name VARCHAR(50), year INT, subject VARCHAR(50) ); INSERT INTO student (name, year, subject) VALUES ('Alice', 1, 'Mathematics'), ('Bob', 2, 'English'), ('Charlie', 3, 'Science'), ('David', 1, 'History'), ('Emily', 2, 'Art'), ('Frank', 3, 'Computer Science');>

Ausgabe:

10 von 100

Gruppieren nach einer einzelnen Spalte

Gruppieren nach einer einzelnen Spalte bedeutet, dass alle Zeilen mit demselben Wert nur dieser bestimmten Spalte in einer Gruppe platziert werden. Betrachten Sie die Abfrage wie unten gezeigt:

Abfrage:

SELECT NAME, SUM(SALARY) FROM emp GROUP BY NAME;>

Die obige Abfrage erzeugt die folgende Ausgabe:

Array-Liste Java

Wie Sie in der obigen Ausgabe sehen können, werden die Zeilen mit doppelten NAMEN unter demselben NAMEN gruppiert und ihr entsprechendes GEHALT ist die Summe der GEHALTE der doppelten Zeilen. Zur Berechnung der Summe wird hier die SUM()-Funktion von SQL verwendet.

Nach mehreren Spalten gruppieren

Nach mehreren Spalten gruppieren heißt zum Beispiel: GROUP BY Spalte1, Spalte2 . Dies bedeutet, dass alle Zeilen mit den gleichen Spaltenwerten platziert werden Spalte 1 Und Spalte 2 in einer Gruppe. Betrachten Sie die folgende Abfrage:

Abfrage:

SELECT SUBJECT, YEAR, Count(*) FROM Student GROUP BY SUBJECT, YEAR;>

Ausgabe:

Ausgabe : Wie Sie in der obigen Ausgabe sehen können, werden die Schüler mit demselben FACH und JAHR in dieselbe Gruppe eingeteilt. Und diejenigen, deren einziges THEMA das gleiche ist, aber nicht das JAHR, gehören zu verschiedenen Gruppen. Deshalb haben wir die Tabelle hier nach zwei Spalten oder mehr als einer Spalte gruppiert.

HAVING-Klausel in der GROUP BY-Klausel

Wir wissen, dass die WHERE-Klausel verwendet wird, um Bedingungen für Spalten zu platzieren, aber was ist, wenn wir Bedingungen für Gruppen platzieren möchten? Hier kommt die HAVING-Klausel zum Einsatz. Wir können die HAVING-Klausel verwenden, um Bedingungen zu platzieren, um zu entscheiden, welche Gruppe Teil der endgültigen Ergebnismenge sein wird. Außerdem können wir keine Aggregatfunktionen wie SUM(), COUNT() usw. mit der WHERE-Klausel verwenden. Wir müssen also die HAVING-Klausel verwenden, wenn wir eine dieser Funktionen in den Bedingungen verwenden möchten.

Syntax :

SELECT Spalte1, Funktionsname(Spalte2)

VON Tabellenname

WHERE-Bedingung

GROUP BY Spalte1, Spalte2

HABENder Zustand

ORDER BY Spalte1, Spalte2;

Erläuterung:

  1. Funktionsname : Name der verwendeten Funktion, zum Beispiel SUM() , AVG().
  2. Tabellenname : Name der Tabelle.
  3. Zustand : Zustand: Gebraucht.

Beispiel :

SELECT NAME, SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>3000;>

Ausgabe :

Wie Sie in der obigen Ausgabe sehen können, erscheint nur eine der drei Gruppen im Ergebnissatz, da es sich um die einzige Gruppe handelt, in der die Summe von SALARY größer als 3000 ist. Daher haben wir hier die HAVING-Klausel verwendet, um diese Bedingung als zu platzieren Die Bedingung muss auf Gruppen und nicht auf Spalten platziert werden.