НачатьНачать бесплатно

Фильтрация с помощью оператора 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 ___;
Редактировать и запускать код