Difference between revisions of "Agregační funkce"
m |
m |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
− | |||
Agregační funkce představují možnost sloučit záznamy či hodnoty do skupin a nad nimi provézt aritmetickou či statistickou operaci. Výsledkem jsou například počty záznamů (COUNT), součet hodnot (SUM), maximální hodnota (MAX) ze sady numerických hodnot apod. | Agregační funkce představují možnost sloučit záznamy či hodnoty do skupin a nad nimi provézt aritmetickou či statistickou operaci. Výsledkem jsou například počty záznamů (COUNT), součet hodnot (SUM), maximální hodnota (MAX) ze sady numerických hodnot apod. | ||
Seznam a význam agregačních funkcí: | Seznam a význam agregačních funkcí: | ||
Line 19: | Line 18: | ||
Jaký je nejvyšší plat v oddělení 80? | Jaký je nejvyšší plat v oddělení 80? | ||
− | SELECT MAX(salary) FROM employees WHERE DEPARTMENT_ID=80; | + | SELECT MAX(salary) FROM employees WHERE DEPARTMENT_ID=80; |
− | Agregační funkce nelze použít v podmínce za WHERE, ale je možné je použít při seskupování za klauzulí GROUP BY. Chceme-li zjistit minimální platy v každém oddělení, seskupíme | + | Jaký je průměrný plat zaměstnanců v celé firmě? |
+ | SELECT AVG(salary) FROM employees; | ||
+ | |||
+ | Agregační funkce nelze použít v podmínce za WHERE, ale je možné je použít při seskupování za klauzulí GROUP BY. Chceme-li zjistit minimální platy v každém oddělení, seskupíme platy podle oddělení a v každé skupině je pak zjištěno minimum: | ||
SELECT MIN(salary), department_id FROM employees GROUP BY department_id; | SELECT MIN(salary), department_id FROM employees GROUP BY department_id; | ||
+ | |||
+ | Jak by se dalo najít oddělení, na kterém je vyplácen minimální plat? Ověřte následující příkaz, případně jej upravte. | ||
+ | SELECT department_id FROM employees GROUP BY department_id HAVING MIN(salary); | ||
+ | |||
+ | Jak velké finance jsou vynaloženy každý rok na věškeré platy? | ||
+ | SELECT SUM(salary) FROM employees; | ||
+ | |||
+ | Kolik na platech čerpají jednotlivá oddělení za celý rok? | ||
+ | SELECT SUM(salary), department_id FROM employees GROUP BY department_id; | ||
+ | |||
+ | Kolik se vyplácí měsíčně? Sestavte dotaz sami. | ||
[http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Hlavní stránka předmětu] | [http://gis.vsb.cz/wikivyuka/index.php/Prostorov%C3%A9_datab%C3%A1ze_-_cvi%C4%8Den%C3%AD Hlavní stránka předmětu] |
Latest revision as of 08:59, 24 February 2015
Agregační funkce představují možnost sloučit záznamy či hodnoty do skupin a nad nimi provézt aritmetickou či statistickou operaci. Výsledkem jsou například počty záznamů (COUNT), součet hodnot (SUM), maximální hodnota (MAX) ze sady numerických hodnot apod. Seznam a význam agregačních funkcí:
COUNT(*) navrací počet počet řádků ve výsledku dotazu COUNT(DISTINCT) počet jedinečných výskytů hodnot SUM() součet numerických hodnot ze zadaného sloupce/pole hodnot AVG() aritmetický průměr z numerických platných hodnot MIN() minimální hodnotu z numerických platných hodnot MAX() maximální hodnota z numerických platných hodnot STD() směrodatnou odchylku GROUP BY sloučí záznamy se stejnými hodnotami určeného atributu a vytvoří souhrnnou hodnotu
Chceme-li zjistit počet všech zaměstnanců, použijeme operaci COUNT:
SELECT COUNT(*) FROM employees;
Chceme-li zjistit kolik zaměstnanců dostává provizi, použijeme operaci COUNT s názvem sloupce:
SELECT COUNT(commission_pct) FROM employees;
Počet je jiný, protože ve sloupci commission_pct jsou i hodnoty NULL, které funkce nezapočítává.
Jaký je nejvyšší plat v oddělení 80?
SELECT MAX(salary) FROM employees WHERE DEPARTMENT_ID=80;
Jaký je průměrný plat zaměstnanců v celé firmě?
SELECT AVG(salary) FROM employees;
Agregační funkce nelze použít v podmínce za WHERE, ale je možné je použít při seskupování za klauzulí GROUP BY. Chceme-li zjistit minimální platy v každém oddělení, seskupíme platy podle oddělení a v každé skupině je pak zjištěno minimum:
SELECT MIN(salary), department_id FROM employees GROUP BY department_id;
Jak by se dalo najít oddělení, na kterém je vyplácen minimální plat? Ověřte následující příkaz, případně jej upravte.
SELECT department_id FROM employees GROUP BY department_id HAVING MIN(salary);
Jak velké finance jsou vynaloženy každý rok na věškeré platy?
SELECT SUM(salary) FROM employees;
Kolik na platech čerpají jednotlivá oddělení za celý rok?
SELECT SUM(salary), department_id FROM employees GROUP BY department_id;
Kolik se vyplácí měsíčně? Sestavte dotaz sami.