Prawo Scotta - jeśli znajdziesz błąd i poprawisz go, to okaże się, że pierwsza wersja była poprawna.
Funkcje agregacji (klauzule WHERE i HAVING)

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;
« wstecz   dalej »