P°φklad 23
Zadßnφ: Zjist∞te, kolik faktur bylo doÜl²ch a kolik odeslan²ch.
Popis °eÜenφ: Takto jednoduch² dotaz se zdß neb²ti hoden umφst∞nφ na konci sbφrky p°φklad∙. Opravdu, dotaz
SELECT Count (druh)
FROM Faktury
GROUP BY druh
zvlßdne ka₧d². V²sledkem je jeden sloupec nadepsan² Druh se dv∞ma °ßdky pro dva typu faktur. My ale chceme, aby v²sledek tvo°il jeden °ßdek se dv∞ma sloupci, nadepsan²mi DoÜlΘ a OdeslanΘ!!
Podφvejte se na nßsledujφcφ dotaz:
SQL:
SELECT SUM(CASE WHEN druh=1 THEN 1 ELSE 0 END) AS DoÜlΘ,
SUM(CASE WHEN druh=2 THEN 1 ELSE 0 END) AS OdeslanΘ
FROM Faktury
V dotazu je pou₧ito agregaΦnφ funkce bez GROUP BY - odpov∞∩ tedy bude mφt jeden zßznam. V Φßsti SELECT jsou dva v²razy, odpov∞∩ tedy bude mφt dva sloupce. Ve v²razu je pou₧ito podmφn∞nΘho v²razu CASE, kter² fakturu jednoho typu nahrazuje jedniΦkou a druhΘho typu nulou. Pak staΦφ tyto jedniΦky seΦφst agregaΦnφ funkcφ.
PokraΦovßnφ