Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Użyj instrukcji CASE w klauzuli WHERE, żeby przefiltrować wiersze, w których hometeam_id wynosi 9857, a liczba goli strzelonych przez gospodarzy jest większa niż liczba goli gości.
  • Użyj instrukcji CASE w klauzuli WHERE, żeby przefiltrować wiersze, w których awayteam_id wynosi 9857, 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 ___;
Edytuj i uruchom kod