|
![]() | Strana 3 (JOIN, COUNT, GROUP BY) | ![]() | Sbírka příkladů SQL dotazů | Strana 5 (Self-join, DISTINCT) | ![]() |
Příklad 7
Zadání: Vypište seznam odběratelů, průměrnou hodnotu jejich obratu, s vyloučením těch, kteří odebrali zboží pouze jednou.
SQL:
SELECT Firmy.nazev, AVG(Faktury.castka),COUNT(*)
FROM Faktury, Firmy
WHERE (Faktury.firma = Firmy.cislo) AND (Firmy.status='O')
GROUP BY Firmy.nazev
HAVING COUNT(*)>1
Poznámky:
a) Sloupec STATUS je typu Znak (Char) a proto se musí zapisovat pouze v apostrofech (') a nikdy v uvozovkách (") jako (někdy) typ řetězec.
b) Všimněte si, čím se od sebe liší podmínky WHERE a HAVING. Podmínka WHERE se dá uplatnit ještě před sestavením skupin, zatímco podmínka HAVING se může vyhodnotit až po sestavení skupin.
Příklad 8
Zadání: Zjistěte průměrnou dobu zaplacení faktur odběrateli.
SQL:
SELECT nazev, AVG(zaplaceno-dat1)
FROM Faktury, Firmy
WHERE Faktury.firma= Firmy.cislo
AND (druh=2 AND zaplaceno IS NOT NULL)
GROUP BY Firmy.nazev
Poznámky:
a) Všimněte si, že agregační funkce může mít za parametr i výraz.
b) Výsledek agregační funkce bude vždy tentýž jako typ argumentu, proto je průměrný počet dnů uveden jako celé číslo.
![]() | Strana 3 (JOIN, COUNT, GROUP BY) | ![]() | Sbírka příkladů SQL dotazů | Strana 5 (Self-join, DISTINCT) | ![]() |