[SQL] Funkcje agregujące

opublikował: SELECT, 2014-01-06

Definicja

Funkcje agregujące to funkcje, które działają na zbiorach danych i zwracają pojedyncze wartości.

Przykładowe dane

Załóżmy, że baza danych składa się z jednej tabeli, która wygląda następująco:

Klienci
id imię drugie_imię nazwisko wiek
1 Jan Józef Kowalski 50
2 Weronika NULL Ziętek 20
3 Mateusz Marek Nowak 20

Baza została maksymalnie uproszczona, aby można było sprawdzić poprawność uzyskanych wyników.

Podstawowe funkcje agregujące

AVG

SELECT AVG(wiek) FROM Klienci zwraca wynik: 30.

SELECT AVG(ALL wiek) FROM Klienci jest równoznaczne z powyższym poleceniem i także zwraca wynik: 30.

SELECT AVG(DISTINCT wiek) FROM Klienci zwraca wynik: 35. Polecenie to uwzględnia bowiem jedynie unikalne wartości, a więc pomija wiek z trzeciego wiersza (20).

COUNT

SELECT COUNT(*) FROM Klienci zwraca wynik: 3.

SELECT COUNT(drugie_imię) FROM Klienci zwraca wynik: 2. Polecenie to uwzględnia bowiem jedynie wartości różne od NULL, a więc pomija drugiego klienta.

SELECT COUNT(ALL drugie_imię) FROM Klienci jest równoznaczne z powyższym poleceniem i także zwraca wynik: 2.

SELECT COUNT(DISTINCT wiek) FROM Klienci zwraca wynik: 2. Polecenie to uwzględnia bowiem jedynie unikalne (i różne od NULL) wartości, a więc pomija wiek z trzeciego wiersza (20).

MAX

SELECT MAX(wiek) FROM Klienci zwraca wynik: 50.

SELECT MAX(ALL wiek) FROM Klienci jest równoznaczne z powyższym poleceniem i także zwraca wynik: 50.

SELECT MAX(DISTINCT wiek) FROM Klienci również zwraca wynik: 50. Nie ma bowiem znaczenia, ile razy pojawi się największy wiek, ale jego wartość. Argument DISTINCT wykorzystywany jest więc jedynie do zachowania zgodności z normami ISO.

MIN

SELECT MIN(wiek) FROM Klienci zwraca wynik: 20.

SELECT MIN(ALL wiek) FROM Klienci jest równoznaczne z powyższym poleceniem i także zwraca wynik: 20.

SELECT MIN(DISTINCT wiek) FROM Klienci również zwraca wynik: 20. Nie ma bowiem znaczenia, ile razy pojawi się najmniejszy wiek, ale jego wartość. Argument DISTINCT wykorzystywany jest więc jedynie do zachowania zgodności z normami ISO.

STDEVP

SELECT STDEVP(wiek) FROM Klienci zwraca wynik: 14,142135623731.

SELECT STDEVP(ALL wiek) FROM Klienci jest równoznaczne z powyższym poleceniem i także zwraca wynik: 14,142135623731.

SELECT STDEVP(DISTINCT wiek) FROM Klienci zwraca wynik: 15. Polecenie to uwzględnia bowiem jedynie unikalne wartości, a więc pomija wiek z trzeciego wiersza (20).

SUM

SELECT SUM(wiek) FROM Klienci zwraca wynik: 90.

SELECT SUM(ALL wiek) FROM Klienci jest równoznaczne z powyższym poleceniem i także zwraca wynik: 90.

SELECT SUM(DISTINCT wiek) FROM Klienci zwraca wynik: 70. Polecenie to uwzględnia bowiem jedynie unikalne wartości, a więc pomija wiek z trzeciego wiersza (20).

VARP

SELECT VARP(wiek) FROM Klienci zwraca wynik: 200.

SELECT VARP(ALL wiek) FROM Klienci jest równoznaczne z powyższym poleceniem i także zwraca wynik: 200.

SELECT VARP(DISTINCT wiek) FROM Klienci zwraca wynik: 225. Polecenie to uwzględnia bowiem jedynie unikalne wartości, a więc pomija wiek z trzeciego wiersza (20).


Zarejestruj się albo zaloguj aby dodać komentarz


Brak komentarzy.