Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Použij příkaz CASE v klauzuli WHERE k filtrování záznamů, kde je hometeam_id rovno 9857 a počet domácích gólů převyšuje počet venkovních.
  • Použij příkaz CASE v klauzuli WHERE k filtrování záznamů, kde je awayteam_id rovno 9857 a počet venkovních gólů převyšuje počet domácích.
  • Ukonči příkaz CASE tak, 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 ___;
Upravit a spustit kód