|
![]() | 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 v apostrofech (') a nikoli v uvozovkßch (") jako 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) | ![]() |