Фильтрация с помощью оператора CASE
Давайте составим список матчей, в которых итальянская команда Bologna одержала победу! В двух таблицах содержится немало команд, поэтому ключевым элементом запроса станет использование оператора CASE в качестве фильтра в предложении WHERE.
Операторы CASE позволяют категоризировать нужные данные и исключать те, которые вам не интересны. Для этого можно использовать оператор CASE как фильтр в предложении WHERE, чтобы убрать из результатов лишние строки.
Вот как это может выглядеть:
SELECT *
FROM table
WHERE
CASE WHEN a > 5 THEN 'Keep'
WHEN a <= 5 THEN 'Exclude' END = 'Keep';
По сути, оператор CASE можно применять как фильтрующий столбец — так же, как и любой другой столбец в базе данных. Единственное отличие: в предложении WHERE этому оператору не нужно давать псевдоним.
Это упражнение является частью курса
Манипуляции с данными в SQL
Инструкции к упражнению
- Используйте оператор
CASEв предложенииWHERE, чтобы отфильтровать матчи, гдеhometeam_idравен9857и голы хозяев превышают голы гостей. - Используйте оператор
CASEв предложенииWHERE, чтобы отфильтровать матчи, гдеawayteam_idравен9857и голы гостей превышают голы хозяев. - Завершите оператор
CASE, исключив матчи, в которых Bologna не победила.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
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 ___;