Počítání hodnot
Místo hvězdičky můžete do závorek za COUNT napsat sloupec. COUNT(sloupec) nepočítá řádky, ale hodnoty: řádky, ve kterých sloupec není NULL. Dva zákazníci obchodu nemají vyplněné město, a tak se tato dvě čísla liší:
SELECT COUNT(*) AS vsichni_zakaznici,
COUNT(mesto) AS s_mestem
FROM zakaznici;| vsichni_zakaznici | s_mestem |
|---|---|
| 14 | 12 |
COUNT(*) spočítá všech 14 řádků, COUNT(mesto) jen těch 12, které město mají. NULL znamená, že tam žádná hodnota není, a kde není hodnota, není co počítat. Sloupec, který nikdy není NULL, třeba id, dá stejné číslo jako COUNT(*).
Chcete-li každou hodnotu započítat jen jednou, napište do závorek před sloupec DISTINCT. V kolika různých městech zákazníci bydlí?
SELECT COUNT(DISTINCT mesto) AS mesta
FROM zakaznici;| mesta |
|---|
| 4 |
Ve čtyřech. SELECT DISTINCT mesto FROM zakaznici; by ukázal pět řádků, protože jedním z nich je NULL, ale COUNT(DISTINCT mesto) hodnotu NULL přeskočí stejně jako COUNT(mesto).
Typická chyba: COUNT(sloupec) tam, kde chcete počítat řádky. SELECT COUNT(vydano) FROM hry; řekne 18, přestože obchod má 20 her: Robot Rebellion a Mystery Manor ještě nevyšly, a tak je jejich vydano NULL. Když chcete počítat řádky, napište COUNT(*), a sloupec dejte do závorek, jen když chcete schválně vynechat řádky, kde je NULL.
Jak psát:
Pokyny
Kolik je recenzí a kolik z nich má komentář? Ukažte obě čísla v jednom dotazu, ve sloupcích pocet_recenzi a s_komentarem:
| pocet_recenzi | s_komentarem |
|---|---|
| 25 | 15 |
Pod tím spočítejte, kolik různých zákazníků zadalo objednávku (sloupec zakaznik_id tabulky objednavky), ve sloupci zakaznici_s_objednavkou:
| zakaznici_s_objednavkou |
|---|
| 12 |
A v jednom dotazu spočítejte řádky tabulky polozky ve sloupci pocet_polozek a různé hry v nich ve sloupci ruzne_hry:
| pocet_polozek | ruzne_hry |
|---|---|
| 42 | 17 |
Začněte programovat zdarma
2/10