602SQL-Úplná dokumentace Index  

Sbírka dotazů – str. 4

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.