SQL - agregační funkce GROUP, SUM, COUNT, HAVING, CONCAT, DISTICT
V SQL je možné využít několik nativních (agregačních) funkcí, nyní se na ně podíváme.
HAVING
Klauzule HAVING je agregační podmínka a provádí se až po WHERE a GROUP BY. Používá se tedy pro další zagregování získaných (již vypočítaných) výsledků.
Typické je např. použití, kdy se v SELECT použije např. COUNT() a SUM() (či jiná agregační funkce) a na tyto již vypočítané hodnoty se provede podmínka HAVING:
Seskup všechny stejná jména (name) z tabulky table1 a vypiš pouze ta, která se vyskytují více než 10x
SELECT COUNT(id), name
FROM table1
GROUP BY name
HAVING COUNT(id) > 10;
CONCAT
CONCAT je funkce na slučování řetězců.
Příklad:
SELECT CONCAT("id:", id, " name: ", name)
FROM table1
Vypíše: id:1 name: First
DISTINCT
Funkce DISTINCT vrátí jen rozdílné záznamy.
Příklad:
SELECT DISTINCT name
FROM table1
Další agregační funkce letem světem
ORDER BY
Seřazení hodnot dle sloupce vzestupně ASC či sestupně DESC
Příklad: Seřaď jména ve sloupci name vzestupně
SELECT name FROM table1 ORDER BY name ASC;
GROUP BY
Seskupení shodných hodnoty ve sloupci
Příklad: Seskup všechna stejná jména ve sloupci name
SELECT name FROM table1 GROUP BY name;
LIMIT
Omezení počtu řádků (výsledků, záznamů)
Příklad: Vrať 10 záznamů
SELECT name FROM table1 LIMIT 10;
OFFSET
Omezení počtu řádků (výsledků, záznamů) včetně posunu od začátku (offsetu)
Příklad: Vrať 10 záznamů (LIMIT) a přeskoč prvních 20 záznamů (OFFSET) - typicky se používá OFFSET pro stránkování výsledků.
SELECT name FROM table1 LIMIT 10 OFFSET 20;
MIN()
Nejnižší hodnota
Příklad: Vrať nejnižší hodnotu ze sloupce id
SELECT MIN(id) FROM table1;
MAX()
Nejvyšší hodnota
Příklad: Vrať nejvyšší hodnotu ze sloupce id
SELECT MAX(id) FROM table1;
AVG()
Průměr hodnot
Příklad: Vrať průměrnou hodnotu ze sloupce id
SELECT AVG(id) FROM table1;
SUM()
Součet hodnot (suma)
Příklad: Vrať sumu hodnot ze sloupce id
SELECT SUM(id) FROM table1;
COUNT()
Počet řádků (výsledků, záznamů)
Příklad: Vrať počet řádků ze sloupce id
SELECT COUNT(id) FROM table1;