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

Добавьте оконную функцию

Отлично! Вы уже получили результирующий набор с датой матча, домашней командой, гостевой командой и голами каждой из сторон. Остался последний шаг — насколько крупным было поражение «Манчестер Юнайтед» в каждом матче?

Чтобы это выяснить, добавьте в основной запрос оконную функцию, которая ранжирует матчи по абсолютному значению разницы между home_goal и away_goal. Это позволит напрямую сравнивать счёт, не задумываясь о том, выступал ли «Манчестер Юнайтед» в роли хозяев или гостей!

Формула уже готова — вам нужно лишь правильно оформить оконную функцию.

Это упражнение является частью курса

Манипуляции с данными в SQL

Посмотреть курс

Инструкции к упражнению

  • Настройте CTE так, чтобы каждая из команд — домашняя и гостевая — имела название, идентификатор и счёт.
  • В основном запросе выберите date, название домашней команды, название гостевой команды, голы домашней команды и голы гостевой команды.
  • Проранжируйте матчи и отсортируйте их по разнице в счёте в убывающем порядке.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

-- Set up the home team CTE
___ ___ ___ (
  SELECT m.id, t.team_long_name,
	  CASE WHEN m.home_goal > m.away_goal THEN 'MU Win'
		   WHEN m.home_goal < m.away_goal THEN 'MU Loss' 
  		   ELSE 'Tie' END AS outcome
  FROM match AS m
  LEFT JOIN team AS t ON m.hometeam_id = t.team_api_id),
-- Set up the away team CTE
___ ___ (
  SELECT m.id, t.team_long_name,
	  CASE WHEN m.home_goal > m.away_goal THEN 'MU Loss'
		   WHEN m.home_goal < m.away_goal THEN 'MU Win' 
  		   ELSE 'Tie' END AS outcome
  FROM match AS m
  LEFT JOIN team AS t ON m.awayteam_id = t.team_api_id)
-- Select columns and and rank the matches by goal difference
SELECT DISTINCT
    ___,
    ___.___ AS home_team,
    ___.___ AS away_team,
    m.home_goal, m.away_goal,
    ___() ___(___ ___ ABS(home_goal - away_goal) ___) as match_rank
-- Join the CTEs onto the match table
FROM match AS m
___ JOIN ___ ON m.id = ___
___ JOIN ___ ON m.id = ___
WHERE m.season = '2014/2015'
      AND ((home.team_long_name = 'Manchester United' AND home.outcome = 'MU Loss')
      OR (away.team_long_name = 'Manchester United' AND away.outcome = 'MU Loss'));
Редактировать и запускать код