Uporaba skupine po za več stolpcev

Razumem smisel GROUP BY x

Toda kako deluje GROUP BY x, y in kaj pomeni?

Rešitev

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.

Komentarji (7)

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:

  1. SELECT (uporablja se za izbiro podatkov iz zbirke podatkov)
    1. FROM (klavzula se uporablja za seznam tabel)

    2. WHERE (klavzula se uporablja za filtriranje zapisov)

    3. GROUP BY (klavzula se lahko uporabi v stavku SELECT za zbiranje podatkov v več zapisih in rezultate združiti po enem ali več stolpcih).

    4. 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)

    5. 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

Komentarji (3)