SQL GROUP BY

SQL GROUP BY

Az SQL GROUP BY záradék az azonos adatok egy vagy több oszlopon alapuló csoportokba rendezésére szolgál. Általában olyan összesítő függvényekkel használják, mint a COUNT() SUM() AVG() MAX() és MIN() az egyes adatcsoportok számításaihoz.

gyümölcsök_kép

Példa: Először mi fogunk teremt egy demó SQL adatbázis és tábla, amelyen a GROUP BY parancsot fogjuk használni.

Alkalmazottak

Lekérdezés:

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

Kimenet:

Csoportonkénti lekérdezés

Szintaxis:

 SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;  
  • aggregate_function: aggregálásra használt függvény pl. SUM() AVG() COUNT().
  • táblázat_neve: annak a táblának a neve, amelyből az adatokat kiválasztjuk.
  • állapot: Opcionális feltétel a sorok szűrésére a csoportosítás előtt (a WHERE-vel együtt használva).
  • oszlop1 oszlop2: Oszlopok, amelyeken a csoportosítást alkalmazzák.

Példák a GROUP BY-re

Tegyük fel, hogy van egy diák asztalunk. Néhány mintaadatot beszúrunk ebbe a táblázatba, majd a GROUP BY használatával műveleteket hajtunk végre, hogy megértsük, hogyan csoportosítja a sorokat egy oszlop alapján, és hogyan összesíti az adatokat.

grp

1. példa: Csoportosítás egyetlen oszlop szerint

Ha egyetlen oszlop szerint csoportosítunk, az abban az oszlopban lévő azonos értékű sorokat egyesítjük. Például a tantárgyak szerinti csoportosítás megmutatja, hogy hány hallgató van beiratkozva az egyes tantárgyakból.

Lekérdezés:

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

Kimenet:

grp-1

Magyarázat: Minden tantárgy kétszer szerepel a táblázatban, így az angol matematika és természettudományok száma 2.

2. példa: Csoportosítás több oszlop szerint

A GROUP BY használata több oszloppal olyan sorokat csoportosít, amelyek ugyanazokat az értékeket osztják meg ezekben az oszlopokban. Például a tantárgy és évszám szerinti csoportosítás során a sorokat ugyanazzal a tárgy-évpárral kombináljuk, és meg tudjuk számolni, hogy hány tanuló esik az egyes csoportokba.

Lekérdezés:

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

Kimenet:

diákok-grp

Magyarázat: Az azonos tárgyú és évfolyamos tanulókat csoportosítják. Mivel minden tantárgy–év pár kétszer fordul elő, a szám minden csoportnál 2.

HAVING záradék a GROUP BY záradékban

A HAVING záradékot a csoportosítás utáni eredmények szűrésére használják, különösen, ha olyan összesítő függvényekkel dolgozunk, mint a SUM() COUNT() vagy AVG(). A WHERE-től eltérően feltételeket alkalmaz a csoportosított adatokra.

emp

1. példa: Szűrés teljes fizetés alapján

Ebben a lekérdezésben név szerint csoportosítjuk az alkalmazottakat, és csak azokat jelenítjük meg, akiknek a teljes fizetése meghaladja az 50 000-et.

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

Kimenet

életkor-1

Magyarázat : Csak azok a munkavállalók jelennek meg az eredményben, akiknek a teljes fizetése meghaladja az 50 000 főt.

2. példa: Szűrés átlagos fizetés alapján

Ebben a lekérdezésben az alkalmazottakat életkor szerint csoportosítjuk, és csak azokat a korcsoportokat jelenítjük meg, ahol az átlagkereset 60 000 felett van.

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

Kimenet:

kimenet-1

Magyarázat: Ez a lekérdezés életkor szerint csoportosítja az alkalmazottakat, és minden életkorhoz kiszámítja az átlagos fizetést. Csak azok a korcsoportok jelennek meg, ahol az átlagkereset meghaladja a 60 000 főt.

Kvíz létrehozása