Reunir las CTE
Ahora que has creado las dos subconsultas que identifican al equipo local y al visitante, es el momento de reorganizar tu consulta con las subconsultas home
y away
como expresiones comunes de tabla (CTE). Verás que la consulta principal incluye la frase SELECT DISTINCT
. Si no identificas sólo los partidos de DISTINCT
, podrías devolver un registro duplicado por cada partido jugado.
Continúa construyendo la consulta para extraer todos los partidos jugados por el Manchester United en la temporada 2014/2015.
Este ejercicio forma parte del curso
Manipulación de datos en SQL
Instrucciones de ejercicio
- Declara las CTE
home
yaway
antes de tu consulta principal. - Une tus CTE a la tabla de partidos utilizando
LEFT JOIN
. - Selecciona los datos relevantes de las CTE en la consulta principal.
- Selecciona la fecha de
match
, los nombres de equipo de las CTE y los goles en casa y fuera de casa dematch
en la consulta principal.
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
-- 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');