Filtrowanie instrukcji CASE
Wygenerujmy listę meczów wygranych przez włoski klub Bologna! W obu tabelach jest całkiem sporo drużyn, dlatego kluczowym elementem zapytania będzie użycie instrukcji CASE jako filtru w klauzuli WHERE.
Instrukcje CASE pozwalają kategoryzować interesujące cię dane – i wykluczać te, które cię nie interesują. Możesz w tym celu użyć instrukcji CASE jako filtru w klauzuli WHERE, żeby usunąć z wyników wiersze, których nie chcesz widzieć.
Oto jak może wyglądać takie podejście:
SELECT *
FROM table
WHERE
CASE WHEN a > 5 THEN 'Keep'
WHEN a <= 5 THEN 'Exclude' END = 'Keep';
Instrukcji CASE możesz używać jako kolumny filtrującej – tak jak każdej innej kolumny w bazie danych. Jedyna różnica polega na tym, że w klauzuli WHERE nie nadajesz jej aliasu.
To ćwiczenie jest częścią kursu
Data Manipulation in SQL
Instrukcje do ćwiczenia
- Użyj instrukcji
CASEw klauzuliWHERE, żeby przefiltrować wiersze, w którychhometeam_idwynosi9857, a liczba goli strzelonych przez gospodarzy jest większa niż liczba goli gości. - Użyj instrukcji
CASEw klauzuliWHERE, żeby przefiltrować wiersze, w którychawayteam_idwynosi9857, a liczba goli gości jest większa niż liczba goli gospodarzy. - Zakończ instrukcję
CASE, wykluczając mecze, których Bologna nie wygrała.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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 ___;