logo

SQL GROUP BY

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.

ovocie_obrázok' title=

Príklad: Najprv budeme vytvoriť demo SQL databázu a tabuľku, na ktorej použijeme príkaz GROUP BY.

rozhranie vs abstraktná trieda
zamestnancov' loading='lazy' title=

dotaz:



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

výstup:

Skupina po dotaze' loading='lazy' title=

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.

grp' loading='lazy' title=

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:

grp-1' loading='lazy' title=

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
študenti-grp' loading='lazy' title=

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.

emp' loading='lazy' title=

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

vek-1' loading='lazy' title=

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:

výstup-1' loading='lazy' title=

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