Zacznij terazZacznij za darmo

Łą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

Zobacz kurs

Instrukcje do ćwiczenia

  • Zadeklaruj CTE home i away przed 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 tabeli match.

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');
Edytuj i uruchom kod