logo

SQL | GRUPPE AV

GROUP BY-erklæringen i SQL brukes til å ordne identiske data i grupper ved hjelp av noen funksjoner. dvs. hvis en bestemt kolonne har de samme verdiene i forskjellige rader, vil den ordne disse radene i en gruppe.

Egenskaper

  • GROUP BY-leddet brukes med SELECT-setningen.
  • I spørringen plasseres GROUP BY-leddet etter HVOR klausul.
  • I spørringen plasseres GROUP BY-leddet før REKKEFØLGE BY-klausul hvis brukt.
  • I spørringen plasseres Group BY-klausulen før Having-klausulen.
  • Plasser betingelse i ha-klausulen.

Syntaks :

VELG kolonne1, funksjonsnavn(kolonne2)



FRA tabellnavn

HVOR tilstand

GRUPPER ETTER kolonne1, kolonne2

BESTILL ETTER kolonne1, kolonne2;

Forklaring:

  1. funksjonsnavn : Navn på funksjonen som brukes, for eksempel SUM() , AVG().
  2. tabellnavn : Navn på tabellen.
  3. betingelse : Tilstand brukt.

La oss anta at vi har to tabeller Employee og Student Sample Tabell er som følger etter å ha lagt til to tabeller, vil vi gjøre noen spesifikke operasjoner for å lære om GROUP BY.

Ansatttabell:

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

Sett inn noen tilfeldige data i en tabell og så vil vi utføre noen operasjoner i GROUP BY.

Spørsmål:

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

Produksjon:

Studentbord:

Spørsmål:

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

Produksjon:

Grupper etter enkelt kolonne

Gruppe med enkelt kolonne betyr å plassere alle radene med samme verdi av bare den aktuelle kolonnen i én gruppe. Vurder søket som vist nedenfor:

Spørsmål:

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

Spørringen ovenfor vil produsere følgende utdata:

Som du kan se i utgangen ovenfor, er radene med dupliserte NAVN gruppert under samme NAVN, og deres tilsvarende LØNN er summen av LØNN for dupliserte rader. SUM()-funksjonen til SQL brukes her for å beregne summen.

Grupper etter flere kolonner

Gruppere etter flere kolonner er for eksempel, GRUPPER ETTER kolonne1, kolonne2 . Dette betyr å plassere alle radene med samme verdier av kolonner kolonne 1 og kolonne 2 i en gruppe. Vurder spørsmålet nedenfor:

min live cricket

Spørsmål:

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

Produksjon:

Produksjon : Som du kan se i utgangen ovenfor er elevene med både samme FAG og ÅR plassert i samme gruppe. Og de hvis eneste EMNE er det samme, men ikke ÅR, tilhører forskjellige grupper. Så her har vi gruppert tabellen etter to kolonner eller mer enn én kolonne.

Å HA Klausul i GROUP BY Klausul

Vi vet at WHERE-klausulen brukes til å plassere betingelser på kolonner, men hva om vi ønsker å plassere betingelser på grupper? Det er her HAVING-klausulen kommer i bruk. Vi kan bruke HAVING-klausulen til å sette betingelser for å bestemme hvilken gruppe som skal være en del av det endelige resultatsettet. Vi kan heller ikke bruke aggregerte funksjoner som SUM(), COUNT() osv. med WHERE-leddet. Så vi må bruke HAVING-klausulen hvis vi vil bruke noen av disse funksjonene i forholdene.

Syntaks :

VELG kolonne1, funksjonsnavn(kolonne2)

FRA tabellnavn

HVOR tilstand

GRUPPER ETTER kolonne1, kolonne2

HAR tilstand

BESTILL ETTER kolonne1, kolonne2;

Forklaring:

  1. funksjonsnavn : Navn på funksjonen som brukes, for eksempel SUM() , AVG().
  2. tabellnavn : Navn på tabellen.
  3. betingelse : Tilstand brukt.

Eksempel :

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

Produksjon :

Som du kan se i utdataene ovenfor vises bare én gruppe av de tre gruppene i resultatsettet, da det er den eneste gruppen der summen av LØNN er større enn 3000. Så vi har brukt HAVING-klausulen her for å plassere denne betingelsen som betingelse er påkrevd å plasseres på grupper ikke kolonner.