Klavzula SQL GROUP BY se uporablja za razvrščanje enakih podatkov v skupine na podlagi enega ali več stolpcev. Običajno se uporablja z agregatnimi funkcijami, kot sta COUNT() SUM() AVG() MAX() in MIN() za izvajanje izračunov za vsako skupino podatkov.
primer: Najprej bomo ustvariti demo SQL baza podatkov in tabela, na kateri bomo uporabili ukaz GROUP BY.
poizvedba:
SELECT Department SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department;Izhod:
Sintaksa:
SELECT column1 aggregate_function(column2) FROM table_name WHERE condition GROUP BY column1 column2;- agregatna_funkcija: funkcija, ki se uporablja za združevanje, npr. SUM() AVG() COUNT().
- ime_tabele: ime tabele, iz katere so izbrani podatki.
- stanje: Izbirni pogoj za filtriranje vrstic pred združevanjem (uporablja se z WHERE).
- stolpec1 stolpec2: Stolpci, za katere je uporabljeno združevanje.
Primeri GROUP BY
Predpostavimo, da imamo tabelo Student. V to tabelo bomo vstavili nekaj vzorčnih podatkov in nato izvedli operacije z uporabo GROUP BY, da bi razumeli, kako združuje vrstice na podlagi stolpca in združuje podatke.
Primer 1: Združevanje po enem stolpcu
Ko grupiramo po enem stolpcu, se vrstice z enako vrednostjo v tem stolpcu združijo. Na primer, razvrščanje po predmetih kaže, koliko študentov je vpisanih v posamezni predmet.
poizvedba:
SELECT subject COUNT(*) AS Student_Count FROM Student GROUP BY subject;Izhod:
Pojasnilo: Vsak predmet se v tabeli pojavi dvakrat, tako da je število za angleško matematiko in naravoslovje 2.
Primer 2: Združevanje po več stolpcih
Uporaba GROUP BY z več stolpci združuje vrstice, ki imajo enake vrednosti v teh stolpcih. Na primer, združevanje po predmetu in letniku bo združilo vrstice z istim parom predmet–letnik in lahko preštejemo, koliko študentov spada v vsako skupino.
poizvedba:
SELECT subject year COUNT(*) FROM Student GROUP BY subject year;Izhod:
Pojasnilo: Dijaki z istim predmetom in letnikom so združeni. Ker se vsak par predmet–leto pojavi dvakrat, je štetje 2 za vsako skupino.
Klavzula HAVING v klavzuli GROUP BY
Klavzula HAVING se uporablja za filtriranje rezultatov po združevanju v skupine, zlasti pri delu z agregatnimi funkcijami, kot sta SUM() COUNT() ali AVG(). Za razliko od WHERE uporablja pogoje za združene podatke.
1. primer: filtriranje glede na skupno plačo
V tej poizvedbi združujemo zaposlene po imenih in prikazujemo samo tiste, katerih skupna plača je večja od 50000.
execvp
SELECT NAME SUM(sal) FROM Emp GROUP BY name HAVING SUM(sal)>50000; Izhod
Razlaga : V rezultatu se pojavijo samo zaposleni, katerih skupna plača presega 50000.
2. primer: filtriranje po povprečni plači
V tej poizvedbi združujemo zaposlene po starosti in prikazujemo samo tiste starostne skupine, kjer je povprečna plača nad 60000.
SELECT age AVG(sal) AS Average_Salary FROM emp GROUP BY age HAVING AVG(sal) > 60000;Izhod:
Pojasnilo: Ta poizvedba združuje zaposlene po starosti in izračuna povprečno plačo za vsako starost. Prikazane so le tiste starostne skupine, kjer je povprečna plača večja od 60000.
Ustvari kviz