logo

SQL GROUP BY

SQL GROUP BY-sætningen bruges til at arrangere identiske data i grupper baseret på en eller flere kolonner. Det bruges almindeligvis med aggregerede funktioner som COUNT() SUM() AVG() MAX() og MIN() til at udføre beregninger på hver gruppe af data.

frugt_billede' title=

Eksempel: Først vil vi skabe en demo SQL-database og -tabel, hvor vi vil bruge GROUP BY-kommandoen.

Medarbejdere' loading='lazy' title=

Forespørgsel:



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

Produktion:

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

Syntaks:

SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;
  • aggregeret_funktion: funktion brugt til aggregering f.eks. SUM() AVG() ANTAL().
  • tabelnavn: navnet på den tabel, hvorfra data er valgt.
  • tilstand: Valgfri betingelse for at filtrere rækker før gruppering (bruges med WHERE).
  • kolonne 1 kolonne 2: Kolonner, som grupperingen anvendes på.

Eksempler på GROUP BY

Lad os antage, at vi har et elevbord. Vi vil indsætte nogle eksempeldata i denne tabel og derefter udføre operationer ved hjælp af GROUP BY for at forstå, hvordan den grupperer rækker baseret på en kolonne og aggregerer data.

grp' loading='lazy' title=

Eksempel 1: Gruppér efter enkelt kolonne

Når vi grupperer efter en enkelt kolonne, kombineres rækker med samme værdi i den kolonne. For eksempel viser gruppering efter emne, hvor mange elever der er tilmeldt hvert fag.

Forespørgsel:

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

Produktion:

grp-1' loading='lazy' title=

Forklaring: Hvert emne optræder to gange i tabellen, så tallet for engelsk matematik og naturvidenskab er 2.

Eksempel 2: Gruppér efter flere kolonner

Brug af GROUP BY med flere kolonner grupperer rækker, der deler de samme værdier i disse kolonner. For eksempel vil gruppering efter fag og år kombinere rækker med det samme fag-år-par, og vi kan tælle, hvor mange elever der falder ind i hver gruppe.

Forespørgsel:

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

Produktion:

studerende-grp' loading='lazy' title=

Forklaring: Elever med samme fag og årgang er grupperet sammen. Da hvert fag-år-par forekommer to gange, er tælleren 2 for hver gruppe.

HAVE Klausul i GROUP BY Klausul

HAVING-sætning bruges til at filtrere resultater efter gruppering, især når der arbejdes med aggregerede funktioner som SUM() COUNT() eller AVG(). I modsætning til WHERE gælder det betingelser for grupperede data.

emp' loading='lazy' title=

Eksempel 1: Filtrer efter samlet løn

I denne forespørgsel grupperer vi medarbejdere efter navn og viser kun dem, hvis samlede løn er større end 50.000.

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

Produktion

hvordan man bestemmer skærmstørrelsen
alder-1' loading='lazy' title=

Forklaring : Kun medarbejdere, hvis samlede løn overstiger 50.000, fremgår af resultatet.

Eksempel 2: Filtrer efter gennemsnitsløn

I denne forespørgsel grupperer vi medarbejdere efter alder og viser kun de aldersgrupper, hvor gennemsnitslønnen er over 60.000.

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

Produktion:

output-1' loading='lazy' title=

Forklaring: Denne forespørgsel grupperer medarbejdere efter alder og beregner gennemsnitslønnen for hver alder. Kun de aldersgrupper, hvor gennemsnitslønnen er større end 60.000, vises.

Opret quiz