Je CASE-instructie filteren
Laten we een lijst maken van wedstrijden die het Italiaanse Bologna heeft gewonnen! Er staan behoorlijk wat extra teams in de twee tabellen, dus een belangrijk onderdeel van een bruikbare query is je CASE-instructie gebruiken als filter in de WHERE-clausule.
Met CASE-instructies kun je de data indelen waarin je geïnteresseerd bent — en data uitsluiten waarin je niet geïnteresseerd bent. Om dit te doen, kun je een CASE-instructie als filter gebruiken in de WHERE-clausule om output te verwijderen die je niet wilt zien.
Zo kun je dat opzetten:
SELECT *
FROM table
WHERE
CASE WHEN a > 5 THEN 'Keep'
WHEN a <= 5 THEN 'Exclude' END = 'Keep';
Kortom: je kunt de CASE-instructie gebruiken als een filterkolom, net als elke andere kolom in je database. Het enige verschil is dat je de instructie niet een alias geeft in WHERE.
Deze oefening maakt deel uit van de cursus
Gegevens manipuleren in SQL
Oefeninstructies
- Gebruik de
CASE-instructie in deWHERE-clausule om te filteren waarhometeam_id9857is en de thuisdoelpunten hoger zijn dan de uitdoelpunten. - Gebruik de
CASE-instructie in deWHERE-clausule om te filteren waarawayteam_id9857is en de uitdoelpunten hoger zijn dan de thuisdoelpunten. - Sluit de
CASE-instructie af door wedstrijden uit te sluiten die Bologna niet heeft gewonnen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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 ___;