Razumem smisel GROUP BY x
Toda kako deluje GROUP BY x, y
in kaj pomeni?
Group By X
pomeni vse tiste z enako vrednostjo za X uvrstiti v eno skupino.
Group By X, Y
pomeni v eno skupino uvrstiti vse, ki imajo enake vrednosti za X in Y.
Za ponazoritev s primerom recimo, da imamo naslednjo tabelo, ki prikazuje, kdo obiskuje kateri predmet na univerzi:
Table: Subject_Selection
Subject Semester Attendee
---------------------------------
ITB001 1 John
ITB001 1 Bob
ITB001 1 Mickey
ITB001 2 Jenny
ITB001 2 James
MKB114 1 John
MKB114 1 Erica
Če uporabimo group by
samo za stolpec predmeta; recimo:
select Subject, Count(*)
from Subject_Selection
group by Subject
boste dobili nekaj takega:
Subject Count
------------------------------
ITB001 5
MKB114 2
...ker je 5 vnosov za ITB001 in 2 za MKB114
Če bi skupinili po
dveh stolpcih:
select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester
bi dobili tole:
Subject Semester Count
------------------------------
ITB001 1 3
ITB001 2 2
MKB114 1 2
To je zato, ker ko grupiramo po dveh stolpcih, to pomeni "grupirajte jih tako, da so vsi z istim predmetom in semestrom v isti skupini, nato pa izračunajte vse agregatne funkcije (Count, Sum, Average itd.) za vsako od teh skupin". V tem primeru je to razvidno iz dejstva, da ko jih preštejemo, so tri osebe, ki opravljajo ITB001 v 1. semestru, in dve, ki ga opravljata v 2. semestru. Obe osebi, ki opravljata MKB114, sta v 1. semestru, zato ni vrstice za 2. semester (v skupino "MKB114, 2. semester" ne sodi noben podatek).
Upam, da je to smiselno.
Klavzula GROUP BY
se uporablja v povezavi s funkcijami za združevanje, da se niz rezultatov združi po enem ali več stolpcih, npr.:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
Zapomnite si ta vrstni red:
FROM (klavzula se uporablja za seznam tabel)
WHERE (klavzula se uporablja za filtriranje zapisov)
GROUP BY (klavzula se lahko uporabi v stavku SELECT za zbiranje podatkov v več zapisih in rezultate združiti po enem ali več stolpcih).
HAVING (klavzula se uporablja v kombinaciji s klavzulo GROUP BY za omejimo skupine vrnjenih vrstic samo na tiste, za katere je izpolnjen pogoj je TRUE)
ORDER BY (ključna beseda se uporablja za razvrščanje množice rezultatov)
Če uporabljate agregatne funkcije, lahko uporabite vse te funkcije, pri čemer jih je treba nastaviti v tem vrstnem redu, sicer lahko pride do napake.
Agregatne funkcije so:
MIN vrne najmanjšo vrednost v danem stolpcu
SUM vrne vsoto številčnih vrednosti v danem stolpcu
AVG vrne povprečno vrednost danega stolpca
COUNT vrne skupno število vrednosti v danem stolpcu
COUNT(*) vrne število vrstic v tabeli