Filtrování pomocí příkazu CASE
Pojďme sestavit seznam zápasů, které vyhrál italský tým Bologna! V obou tabulkách je celá řada dalších týmů, takže klíčovou součástí dotazu bude využití příkazu CASE jako filtru v klauzuli WHERE.
Příkazy CASE ti umožňují kategorizovat data, která tě zajímají – a vyloučit ta, která nepotřebuješ. Za tímto účelem lze příkaz CASE použít jako filtr v klauzuli WHERE a odfiltrovat výsledky, které nechceš zobrazovat.
Takhle by to mohlo vypadat:
SELECT *
FROM table
WHERE
CASE WHEN a > 5 THEN 'Keep'
WHEN a <= 5 THEN 'Exclude' END = 'Keep';
Příkaz CASE lze v podstatě použít jako filtrující sloupec stejně jako jakýkoli jiný sloupec v databázi. Jediný rozdíl je v tom, že v klauzuli WHERE mu nepřiřazuješ alias.
Toto cvičení je součástí kurzu
Manipulace s daty v SQL
Pokyny k cvičení
- Použij příkaz
CASEv klauzuliWHEREk filtrování záznamů, kde jehometeam_idrovno9857a počet domácích gólů převyšuje počet venkovních. - Použij příkaz
CASEv klauzuliWHEREk filtrování záznamů, kde jeawayteam_idrovno9857a počet venkovních gólů převyšuje počet domácích. - Ukonči příkaz
CASEtak, aby byly vyloučeny zápasy, které Bologna nevyhrála.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
SELECT
season,
date,
home_goal,
away_goal
FROM matches_italy
WHERE
-- Find games where home_goal is more than away_goal
___ ___ hometeam_id = 9857 ___ home_goal ___ away_goal ___ 'Bologna Win'
-- Find games where away_goal is more than home_goal
___ awayteam_id = 9857 ___ away_goal ___ home_goal ___ 'Bologna Win'
-- Exclude games not won by Bologna
___ IS NOT ___;