Łączenie CTE w całość
Masz już dwa podzapytania identyfikujące drużyny gospodarzy i gości – czas przekształcić je w Common Table Expressions (CTE) i odpowiednio przebudować zapytanie. Zwróć uwagę, że główne zapytanie zawiera frazę SELECT DISTINCT. Bez filtrowania wyłącznie unikalnych (DISTINCT) meczów możesz otrzymać zduplikowane rekordy dla każdego rozegranego spotkania.
Kontynuuj budowanie zapytania, aby wyodrębnić wszystkie mecze rozegrane przez Manchester United w sezonie 2014/2015.
To ćwiczenie jest częścią kursu
Data Manipulation in SQL
Instrukcje do ćwiczenia
- Zadeklaruj CTE
homeiawayprzed głównym zapytaniem. - Połącz swoje CTE z tabelą meczów za pomocą
LEFT JOIN. - Wybierz odpowiednie dane z CTE do głównego zapytania.
- W głównym zapytaniu pobierz datę z tabeli
match, nazwy drużyn z CTE oraz liczbę goli gospodarzy i gości z tabelimatch.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
-- 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 the date, team names and goals
SELECT DISTINCT
___.___,
___.___ AS home_team_name,
___.___ AS away_team_name,
___.___,
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');