Klauzula SQL GROUP BY sa používa na usporiadanie identických údajov do skupín na základe jedného alebo viacerých stĺpcov. Bežne sa používa s agregačnými funkciami ako COUNT() SUM() AVG() MAX() a MIN() na vykonávanie výpočtov pre každú skupinu údajov.
Príklad: Najprv budeme vytvoriť demo SQL databázu a tabuľku, na ktorej použijeme príkaz GROUP BY.
rozhranie vs abstraktná trieda
dotaz:
SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;výstup:
Syntax:
SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;- agregovaná_funkcia: funkcia používaná na agregáciu napr. SUM() AVG() COUNT().
- table_name: názov tabuľky, z ktorej sa vyberajú údaje.
- podmienka: Voliteľná podmienka na filtrovanie riadkov pred zoskupením (používa sa s WHERE).
- stĺpec1 stĺpec2: Stĺpce, na ktoré sa použije zoskupenie.
Príklady GROUP BY
Predpokladajme, že máme študentskú tabuľku. Do tejto tabuľky vložíme niekoľko vzorových údajov a potom vykonáme operácie pomocou GROUP BY, aby sme pochopili, ako zoskupuje riadky na základe stĺpca a agreguje údaje.
Príklad 1: Zoskupenie podľa jedného stĺpca
Keď zoskupíme podľa jedného stĺpca, skombinujú sa riadky s rovnakou hodnotou v tomto stĺpci. Napríklad zoskupenie podľa predmetov ukazuje, koľko študentov je zapísaných v každom predmete.
dotaz:
SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;výstup:
Vysvetlenie: Každý predmet sa v tabuľke zobrazí dvakrát, takže počet anglických matematikov a prírodných vied je 2.
Príklad 2: Zoskupenie podľa viacerých stĺpcov
Použitie GROUP BY s viacerými stĺpcami zoskupí riadky, ktoré majú v týchto stĺpcoch rovnaké hodnoty. Napríklad zoskupenie podľa predmetu a ročníka spojí riadky s rovnakým párom predmet – ročník a môžeme spočítať, koľko študentov patrí do každej skupiny.
dotaz:
SELECT subject year COUNT(*) FROM Student GROUP BY subject year;výstup:
java pridať do poľa
Vysvetlenie: Žiaci s rovnakým predmetom a ročníkom sú zoskupení. Keďže každý pár predmet-rok sa vyskytuje dvakrát, počet je 2 pre každú skupinu.
Klauzula HAVING v klauzule GROUP BY
Klauzula HAVING sa používa na filtrovanie výsledkov po zoskupení, najmä pri práci s agregovanými funkciami ako SUM() COUNT() alebo AVG(). Na rozdiel od WHERE aplikuje podmienky na zoskupené dáta.
Príklad 1: Filter podľa celkovej mzdy
V tomto dotaze zoskupujeme zamestnancov podľa mena a zobrazujeme len tých, ktorých celkový plat je vyšší ako 50 000.
SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000; Výstup
Vysvetlenie : Vo výsledku sa objavia iba zamestnanci, ktorých celková mzda presahuje 50 000.
Príklad 2: Filter podľa priemernej mzdy
V tomto dopyte zoskupujeme zamestnancov podľa veku a zobrazujeme len tie vekové skupiny, ktorých priemerná mzda je vyššia ako 60 000.
SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;výstup:
Vysvetlenie: Tento dotaz zoskupuje zamestnancov podľa veku a vypočítava priemernú mzdu pre každý vek. Zobrazia sa len tie vekové skupiny, ktorých priemerný plat je vyšší ako 60 000.
Vytvoriť kvíz