Agregační funkce
Speciální skupinou jsou funkce agregační. Zatímco dosud zmíněné funkce vrací jednu hodnotu pro každý řádek zpracovávaného SQL dotazu, agregační funkce vrací jen jeden řádek, tedy agregují všechny řádky do jedné hodnoty. Seznam standardních funkcí uvádí tabulka 6.
Tab. 6: Agregační funkce
Název funkce
|
Popis funkce
|
COUNT
|
Počet řádků, které jsou výsledkem SQL dotazu
|
AVG(sloupec)
|
Vypočítá aritmetický průměr sloupce
|
SUM(sloupec)
|
Vypočítá sumární součet sloupce
|
MIN(sloupec)
|
Vrací minimum sloupce
|
MAX(sloupec)
|
Vrací maximum sloupce
|
STDDEV(sloupec)
|
Počítá standardní odchylku
|
MEDIAN(sloupec)
|
Počítá medián ze sloupce
|
Funkci COUNT lze použít ve třech variantách:
SELECT COUNT(*), COUNT(date_of_birth), COUNT(DISTINCT date_of_birth) FROM patients
Varianta s hvězdičkou vrací prostý počet řádku SQL dotazu, druhá varianta s názvem sloupce vrací počet řádků s vyplněnou hodnotou daného sloupce (NOT NULL), třetí varianta s klíčovým slovem DISTINCT vrací počet unikátních hodnot v daném sloupci.
Pro výsledek musí platit vždy
COUNT(*) >= COUNT(sloupec) >= COUNT(DISTINCT sloupec)
Funkce AVG, STDDEV a SUM lze použít pouze pro číselné sloupce, sloupce MIN, MAX pro všechny základní datové typy.
Agregační funkce nelze kombinovat s ostatními funkcemi. Nelze:
SELECT COUNT(*), LENGTH (patient_id) FROM patients.
Výjimkou jsou funkce, které vrací jednu hodnotu jako např. CURRENT_DATE. I v tomto případě je však doporučeno aplikovat na tyto funkce funkci agregační:
SELECT COUNT(*), MAX(CURRENT_DATE) FROM patients.
Bez omezení je možné aplikovat standardní funkce na výsledek agregační funkce:
SELECT ROUND(COUNT(*)/10) FROM patients