logo

SQL GROUP BY

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.

sadje_slika' title=

primer: Najprej bomo ustvariti demo SQL baza podatkov in tabela, na kateri bomo uporabili ukaz GROUP BY.

Zaposleni' loading='lazy' title=

poizvedba:



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

Izhod:

Skupina po poizvedbi' loading='lazy' title=

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.

grp' loading='lazy' title=

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:

gr-1' loading='lazy' title=

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:

študenti-grp' loading='lazy' title=

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.

emp' loading='lazy' title=

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

starost-1' loading='lazy' title=

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:

izhod-1' loading='lazy' title=

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