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
Instruções de exercício
- Declare as CTEs
home
eaway
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 tabelamatch
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');