|
Strana 5 (Self-join, DISTINCT) | Sbírka příkladů SQL dotazů | Strana 7 (EXTRACT, OUTER JOIN) |
Příklad 11
Zadání: Vyberte ty faktury, které nejsou zaplacené
SQL:
SELECT *
FROM Faktury
WHERE (Faktury.zaplaceno IS NULL)
Poznámka:
a) Operátor IS NULL
se používá právě v takovýchto příkladech: vybrat ty záznamy, v nichž některý sloupec je nebo není vyplněn.
b) Pokud bychom chtěli tuto podmínku obrátit (negovat), lze použít dva ekvivalentní zápisy: WHERE (Faktury.zaplaceno IS NOT NULL)
nebo WHERE NOT (Faktury.zaplaceno IS NULL)
.
Příklad 12
Zadání: Vytvořte dotaz, který zjistí nezaplacené faktury odběratelů a vypočítá penále k dnešnímu dni. Lhůta na zaplacení nechť je 14 dní, penále je 1% z ceny za každý den po lhůtě.
SQL:
SELECT Faktury.castka AS ČÁSTKA,
(Today-dat1-14) AS POČET_DNÍ,
(Today-dat1-14)*0.01*castka AS PENÁLE,
castka+(Today-dat1-14)*0.01*castka AS CELKEM,
Firmy.nazev AS NÁZEV,
Faktury.cislo AS FA_ČÍSLO
FROM Faktury, Firmy
WHERE Faktury.firma=Firmy.cislo
AND (Faktury.zaplaceno IS NULL AND
Faktury.dat1<=Today-14 AND
Faktury.druh=2)
Poznámky:
a) Všimněte si, že odpověď na tento dotaz se liší den ode dne - jak narůstá penále.
b) Ve výrazu v části SELECT i v podmínce WHERE lze používat některé funkce programovacího jazyka. Místo funkce jazyka Today
by šlo se stejným výsledkem použít i funkci SQL CURRENT_DATE
.
Strana 5 (Self-join, DISTINCT) | Sbírka příkladů SQL dotazů | Strana 7 (EXTRACT, OUTER JOIN) |