ComeçarComece gratuitamente

Juntando as CTEs

Agora que você criou as duas subconsultas que identificam os times anfitrião e visitante, é hora de reorganizar a consulta com as subconsultas home e away como expressões de tabela comuns (CTEs). Você perceberá que a consulta principal inclui a frase SELECT DISTINCT. Sem identificar apenas as partidas do DISTINCT, você pode retornar um registro duplicado para cada jogo realizado.

Continue criando a consulta para extrair todas as partidas disputadas pelo Manchester United na temporada 2014/2015.

Este exercício faz parte do curso

Manipulação de dados em SQL

Ver Curso

Instruções de exercício

  • Declare as CTEs home e away antes da consulta principal.
  • Junte as CTEs à tabela de partidas usando um LEFT JOIN.
  • Selecione os dados relevantes das CTEs na consulta principal.
  • Selecione a data da tabela match, os nomes dos times das CTEs e os gols em casa/fora da tabela match na consulta principal.

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 team names, the date and goals
SELECT DISTINCT
    ___,
    ___.___ AS home_team,
    ___.___ AS away_team,
    ___,
    m.away_goal
-- 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' 
           OR away.team_long_name = 'Manchester United');
Editar e executar código