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.
Eksempel: Først vil vi skape en demo SQL-database og tabell som vi skal bruke GROUP BY-kommandoen på.
Spørsmål:
SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;Produksjon:
java string charat
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.
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:
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:
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.
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
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:
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