Difference between revisions of "Agregační funkce"

From Wikivyuka
Jump to: navigation, search
m
 
m
 
(2 intermediate revisions 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 20: 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;
 +
 
 +
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 palty podle oddělení a v každé skupině je pak zjištěno minimum:
+
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]

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.

Hlavní stránka předmětu