Logo Platforma Edukacyjna - kursy do matury i egzaminów z informatyki

GROUP BY: liczenie w grupach

GROUP BY dzieli wiersze na grupy o tej samej wartości. Funkcja agregująca liczy wtedy osobno dla każdej grupy, a z każdej grupy zostaje jeden wiersz wyniku.

Najpierw teoria

Grupy to pudełka

`GROUP BY` rozkłada wiersze do pudełek: jedno pudełko na każdą wartość kolumny.

Funkcja agregująca liczy osobno w każdym pudełku.

Z każdego pudełka zostaje dokładnie jeden wiersz wyniku.

Kraków
Kraków3
Niepołomice
Niepołomice1
Skawina
Skawina1

Uczniowie z tego samego miasta stają razem, a COUNT(*) liczy każdą grupę. Brak miasta (NULL) też tworzy swoją grupę.

To zapytanie możesz zmienić: kliknij w nie, wpisz swoje i naciśnij Enter. Uczniowie odegrają Twoją wersję.

FROM uczniowie: 6 wierszy w szeregu. Każdy wiersz to jedna postać, a kartki pod nią to kolumny.

1/3
imienazwiskomiasto
OlaMazurKraków
MajaKaczmarekKraków
FilipGrabowskiNiepołomice
SzymonMichalskiSkawina
LenaKrólKraków
AntoniWieczorekNULL

Grupować możesz po każdej kolumnie, np. po klasie.

FROM uczniowie: 6 wierszy w szeregu. Każdy wiersz to jedna postać, a kartki pod nią to kolumny.

1/3
imienazwiskoklasa_id
OlaMazur1
MajaKaczmarek1
FilipGrabowski1
SzymonMichalski2
LenaKról2
AntoniWieczorek2

Średnia każdego ucznia: grupa to wszystkie oceny jednego ucznia.

FROM oceny: 6 wierszy w szeregu. Każdy wiersz to jedna postać, a kartki pod nią to kolumny.

1/3
uczen_idocena
16
15
35
34
43
42

Grupy sortujesz jak zwykłe wiersze, także po wartości funkcji. Przy remisie decyduje drugi klucz, tu nazwa miasta.

FROM uczniowie: 6 wierszy w szeregu. Każdy wiersz to jedna postać, a kartki pod nią to kolumny.

1/5
imienazwiskomiasto
OlaMazurKraków
MajaKaczmarekKraków
FilipGrabowskiNiepołomice
SzymonMichalskiSkawina
LenaKrólKraków
AntoniWieczorekNULL

Pułapka

Każda kolumna w SELECT musi stać w GROUP BY albo w funkcji agregującej. Ta baza przepuści błąd i wypisze wartość z przypadkowego wiersza grupy.