6.1 Lista funkcji agregujących

Kiedy używasz grupowania wierszy w SQL z operatorem GROUP BY, możesz użyć SELECTfunkcji w instrukcji, które operują na zgrupowanych danych. Takie funkcje są również nazywane funkcjami agregującymi.

Oto lista najpopularniejszych z nich:

# Funkcjonować Opis
1 LICZYĆ() Zwraca liczbę wartości w grupie
2 SUMA() Zwraca sumę wartości w grupie
3 MAKS() Zwraca maksymalną wartość grupy
4 MIN() Zwraca minimalną wartość grupy
5 Śr.() Zwraca średnią grupy
6 BIT_AND() Wykonuje bitową operację AND na wszystkich wartościach grupy
7 BIT_LUB() Wykonuje bitową operację LUB na wszystkich wartościach grupy
8 BIT_XOR() Wykonuje bitowe XOR na wszystkich wartościach grupy
9 GROUP_CONCAT() Łączy wszystkie wartości grupy w jeden ciąg
To nie jest pełna lista funkcji agregujących, ale reszta jest bardzo specyficzna i nie sądzę, że będziesz ich używać w ciągu najbliższych 5 lat.Jeśli nadal ich potrzebujesz, zawsze możesz przeczytać oficjalną dokumentację swojego DBMS.

Teraz spójrzmy na kilka przykładów z naszymi funkcjami agregującymi.

6.2 Analiza wynagrodzeń pracowników

Obliczmy statystyki dotyczące naszych pracowników z tabeli pracowników .

Pytanie pierwsze: ilu mamy pracowników?

Jeśli chcemy poznać liczbę wszystkich rekordów w tabeli, możemy użyć do tego celu funkcji agregującej COUNT. Żądanie będzie wyglądać następująco:

SELECT COUNT(*) FROM employee

A MySQL jako odpowiedź zwróci liczbę 6. Mamy 6 pracowników w dziale, w tym kota. W porządku.

Pytanie drugie: ile płacimy miesięcznie wszystkim pracownikom?

Aby odpowiedzieć na to pytanie, musimy zsumować wynagrodzenia wszystkich pracowników. W tym celu używamy funkcji agregującejSUM()

Żądanie będzie wyglądać następująco:

SELECT SUM(salary) FROM employee

Zauważ, że tym razem jesteśmy zobowiązani do określenia wartości której kolumny podsumowujemy. Określiliśmy kolumnę wynagrodzeń . Nie możemy po prostu zsumować wszystkich pól w tabeli.

A MySQL jako odpowiedź zwróci numer 461000. Mamy w dziale 6 pracowników, a pensja to 461 tys. Zbyt wiele.

I na koniec trzecie pytanie: jakie są nasze maksymalne i minimalne wynagrodzenia w dziale? Cóż, obliczmy średnią pensję. Aby to zrobić, potrzebujemy funkcji MIN, MAXi AVG.

Tym razem zapytanie będzie nieco bardziej złożone i będzie wyglądać tak:

SELECT MIN(salary), AVG(salary), MAX(salary)
FROM employee

Wynikiem tego zapytania będzie:

MIN(pensja) Średnia (wynagrodzenie) MAKS(pensja)
1000 76833.3333 200000

Płaca minimalna w naszym dziale to 1000 dolarów – bardzo dobrze. Maksymalna pensja to 200 tysięcy, ale to dyrektor.

Ale średnia pensja jest zbyt wysoka, trzeba jakoś zoptymalizować koszty. Zatrudnimy drugiego kota i tyle :)