Funkcje agregacji używane z klauzulą GROUP BY
Klauzula GROUP BY scala w jeden rekord rekordy o identycznych wartościach wskazanych na liście pól.
Jeśli w instrukcji SELECT
umieścisz funkcję agregacji SQL, na przykład Sum lub Count,
to dla każdego tak powstałego rekordu obliczane są odpowiednie wartości zagregowane.
Jeżeli w instrukcji SELECT
użyjemy tylko funkcji agregacji, to w wyniku otrzymamy dokładnie 1 rekord. Jeżeli
oprócz funkcji agregacji użyjemy również innych wyrażeń, to muszą one wystąpić w klauzuli GROUP
, a ilość
rekordów odpowiada ilość różnych wartości dla podanych wyrażeń.
AVG(wyrażenie)
- Zwraca średnią arytmetyczną dla podanego
wyrażenia
:
BIT_AND(wyrażenie)
- Zwraca wartość z wykonaną operacją
AND
na wszystkich bitach wyrażenia
.
Obliczenia wykonywane są na liczbie 64-bitowej (BIGINT
).
BIT_OR(wyrażenie)
- Zwraca wartość z wykonaną operacją
OR
na wszystkich bitach wyrażenia
.
Obliczenia wykonywane są na liczbie 64-bitowej (BIGINT
).
COUNT(wyrażenie)
- Funkcja zwraca ilość rekordów zawierających wartość różną od NULL w wierszach wybranych przez instrukcję
SELECT
. Użycie składni COUNT(*)
zawsze zwraca ilość wszystkich rekordów, natomiast
COUNT(wyrażenie)
zwraca ilość rekordów, a których wyrażenie
przyjmuje wartość różną od NULL:
mysql> SELECT COUNT(*) FROM student;
mysql> SELECT nazwisko, COUNT(*)
-> FROM studenci
-> GROUP BY nazwisko;
mysql> SELECT nazwisko, COUNT(ile_ocen)
-> FROM studenci
-> GROUP BY nazwisko;
COUNT(DISTINCT wyrażenie,[wyrażenie...])
- Funkcja działa podobnie do
COUNT(DISTINCT wyrażenie)
z tą różnicą, że w wyniku pomijane są rekordy
o zdublowanej wartości wyrażenie
. W przypadku podania kilku argumentów uwzględniane są tylko te rekordy,
dla których wszystkie podane wyrażenia
maja wartość różną od NULL:
mysql> SELECT COUNT(DISTINCT ocena) FROM studenci;
MAX(wyrażenie)
- Zwraca największą wartość dla argumentu
wyrażenie
:
mysql> SELECT nazwisko, MAX(wynik_testu)
FROM studenci
GROUP BY nazwisko;
MIN(wyrażenie)
- Zwraca najmniejszą wartość dla argumentu
wyrażenie
:
mysql> SELECT nazwisko, MIN(wynik_testu)
FROM studenci
GROUP BY nazwisko;
STD(wyrażenie)
- Zwraca obliczone odchylenie standardowe dla argumentu
wyrażenie
.
STDDEV(wyrażenie)
- Zwraca obliczone odchylenie standardowe dla argumentu
wyrażenie
.
SUM(wyrażenie)
- Zwraca sumę dal argumentu
wyrażenie
. Jeżeli brak wartości do sumowania, to zwracana jest wartość NULL:
mysql> SELECT nazwisko, SUM(wplata)
FROM studenci
GROUP BY nazwisko;