ComeçarComece gratuitamente

Adicionar uma função de janela

Fantástico! Agora você tem um conjunto de resultados que traz a data da partida, o time anfitrião, o time visitante e os gols marcados por cada time. Ainda falta responder a um último componente da pergunta: De quanto o Manchester United perdeu em cada partida?

Para determinar isso, vamos adicionar uma função de janela à consulta principal que classifica as partidas pelo valor absoluto da diferença entre home_goal e away_goal. Isso nos permite comparar diretamente a diferença nas pontuações sem ter que considerar se o Manchester United jogou como time anfitrião ou visitante.

A equação está completa para você - tudo o que você precisa fazer é completar corretamente a função de janela!

Este exercício faz parte do curso

Manipulação de dados em SQL

Ver Curso

Instruções de exercício

  • Configure as CTEs de modo que os times anfitrião e visitante tenham um nome, um ID e uma pontuação associados a eles.
  • Selecione a data, o nome do time anfitrião, o nome do time visitante, gols do anfitrião e gols do visitante na consulta principal.
  • Classifique as partidas e ordene-as pela diferença de pontuação em ordem decrescente.

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

-- 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'));
Editar e executar código