logo

SQL | GRUPPE EFTER

GROUP BY-erklæringen i SQL bruges til at arrangere identiske data i grupper ved hjælp af nogle funktioner. dvs. hvis en bestemt kolonne har de samme værdier i forskellige rækker, vil den arrangere disse rækker i en gruppe.

Funktioner

  • GROUP BY-sætning bruges sammen med SELECT-sætningen.
  • I forespørgslen placeres GROUP BY-sætningen efter HVOR klausul.
  • I forespørgslen placeres GROUP BY-sætningen før BESTILLE BY-klausul, hvis den bruges.
  • I forespørgslen placeres Group BY-udtrykket før Having-udtrykket.
  • Placer betingelse i have-klausulen.

Syntaks :



VÆLG kolonne1, funktionsnavn (kolonne2)

FRA tabelnavn

HVOR tilstand



GRUPPER EFTER kolonne1, kolonne2

BESTIL EFTER kolonne1, kolonne2;

Forklaring:



  1. funktionsnavn : Navn på den anvendte funktion, f.eks. SUM() , AVG().
  2. tabelnavn : Navn på tabellen.
  3. tilstand : Stand brugt.

Lad os antage, at vi har to tabeller Employee og Student Sample Table er som følger, efter at vi har tilføjet to tabeller, vil vi udføre nogle specifikke operationer for at lære om GROUP BY.

Medarbejdertabel:

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

Indsæt nogle tilfældige data i en tabel, og så udfører vi nogle operationer i GROUP BY.

Forespørgsel:

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);>

Produktion:

Elevbord:

Forespørgsel:

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');>

Produktion:

Gruppér efter enkelt kolonne

Grupper ved enkelt kolonne betyder, at alle rækker med samme værdi af kun den pågældende kolonne placeres i én gruppe. Overvej forespørgslen som vist nedenfor:

Forespørgsel:

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

Ovenstående forespørgsel vil producere nedenstående output:

Som du kan se i ovenstående output, er rækkerne med duplikerede NAVNE grupperet under det samme NAVN, og deres tilsvarende LØN er summen af ​​LØN af duplikerede rækker. SQL-funktionen SUM() bruges her til at beregne summen.

Gruppér efter flere kolonner

Grupper efter flere kolonner er f.eks. GRUPPER EFTER kolonne1, kolonne2 . Dette betyder at placere alle rækkerne med de samme værdier af kolonner kolonne 1 og kolonne 2 i én gruppe. Overvej nedenstående forespørgsel:

min live cricket

Forespørgsel:

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

Produktion:

Produktion : Som du kan se i ovenstående output er eleverne med både samme FAG og ÅR placeret i samme gruppe. Og dem, hvis eneste EMNE er det samme, men ikke ÅR, tilhører forskellige grupper. Så her har vi grupperet tabellen efter to kolonner eller mere end én kolonne.

HAVE Klausul i GROUP BY Klausul

Vi ved, at WHERE-sætningen bruges til at placere betingelser på kolonner, men hvad nu hvis vi ønsker at placere betingelser på grupper? Det er her, HAVING-klausulen kommer i brug. Vi kan bruge HAVING-klausulen til at placere betingelser for at afgøre, hvilken gruppe der skal indgå i det endelige resultatsæt. Vi kan heller ikke bruge aggregerede funktioner som SUM(), COUNT() osv. med WHERE-sætningen. Så vi er nødt til at bruge HAVING-sætningen, hvis vi vil bruge nogen af ​​disse funktioner under betingelserne.

Syntaks :

VÆLG kolonne1, funktionsnavn (kolonne2)

FRA tabelnavn

HVOR tilstand

GRUPPER EFTER kolonne1, kolonne2

HAR tilstand

BESTIL EFTER kolonne1, kolonne2;

Forklaring:

  1. funktionsnavn : Navn på den anvendte funktion, f.eks. SUM() , AVG().
  2. tabelnavn : Navn på tabellen.
  3. tilstand : Stand brugt.

Eksempel :

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

Produktion :

Som du kan se i ovenstående output, vises kun én gruppe ud af de tre grupper i resultatsættet, da det er den eneste gruppe, hvor summen af ​​LØN er større end 3000. Så vi har brugt HAVING-sætningen her til at placere denne betingelse som betingelse skal placeres på grupper ikke kolonner.