logo

SQL GROUP BY

SQL GROUP BY-leddet brukes til å ordne identiske data i grupper basert på én eller flere kolonner. Det brukes ofte med aggregerte funksjoner som COUNT() SUM() AVG() MAX() og MIN() for å utføre beregninger på hver gruppe data.

frukt_bilde' title=

Eksempel: Først vil vi skape en demo SQL-database og tabell som vi skal bruke GROUP BY-kommandoen på.

Ansatte' loading='lazy' title=

Spørsmål:



SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;

Produksjon:

java string charat
Gruppe for forespørsel' loading='lazy' title=

Syntaks:

SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;
  • samlet_funksjon: funksjon som brukes til aggregering f.eks. SUM() AVG() ANTALL().
  • tabellnavn: navnet på tabellen som data er valgt fra.
  • betingelse: Valgfri betingelse for å filtrere rader før gruppering (brukes med WHERE).
  • kolonne 1 kolonne 2: Kolonner som grupperingen brukes på.

Eksempler på GROUP BY

La oss anta at vi har et Studentbord. Vi vil sette inn noen eksempeldata i denne tabellen og deretter utføre operasjoner ved å bruke GROUP BY for å forstå hvordan den grupperer rader basert på en kolonne og samler data.

grp' loading='lazy' title=

Eksempel 1: Grupper etter enkelt kolonne

Når vi grupperer etter en enkelt kolonne, kombineres rader med samme verdi i den kolonnen. For eksempel viser gruppering etter emne hvor mange studenter som er påmeldt hvert emne.

Spørsmål:

hashset java
SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;

Produksjon:

grp-1' loading='lazy' title=

Forklaring: Hvert emne vises to ganger i tabellen, så antallet for engelsk matematikk og naturfag er 2.

Eksempel 2: Grupper etter flere kolonner

Ved å bruke GROUP BY med flere kolonner grupperes rader som deler de samme verdiene i disse kolonnene. For eksempel vil gruppering etter emne og år kombinere rader med samme fag-år-par, og vi kan telle hvor mange elever som faller inn i hver gruppe.

Spørsmål:

SELECT subject year COUNT(*) FROM Student GROUP BY subject year;

Produksjon:

student-grp' loading='lazy' title=

Forklaring: Elever med samme emne og år er gruppert sammen. Siden hvert fag-år-par forekommer to ganger, er tellingen 2 for hver gruppe.

Å HA Klausul i GROUP BY Klausul

HAVING-leddet brukes til å filtrere resultater etter gruppering, spesielt når du arbeider med aggregerte funksjoner som SUM() COUNT() eller AVG(). I motsetning til WHERE gjelder det betingelser for grupperte data.

emp' loading='lazy' title=

Eksempel 1: Filtrer etter totallønn

I denne spørringen grupperer vi ansatte etter navn og viser kun de som har en totallønn på over 50 000.

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

Produksjon

java cast int til streng
alder-1' loading='lazy' title=

Forklaring : Kun ansatte med totallønn over 50 000 vises i resultatet.

Eksempel 2: Filtrer etter gjennomsnittslønn

I denne spørringen grupperer vi ansatte etter alder og viser bare de aldersgruppene der gjennomsnittslønnen er over 60 000.

SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;

Produksjon:

utgang-1' loading='lazy' title=

Forklaring: Denne spørringen grupperer ansatte etter alder og beregner gjennomsnittslønn for hver alder. Bare de aldersgruppene der gjennomsnittslønnen er høyere enn 60 000 vises.

Lag quiz