Kom igångKom igång gratis

Sätt ihop CTE:erna

Nu när du har skapat de två underfrågor som identifierar hem- och bortamotståndarna är det dags att strukturera om din fråga med home- och away-underfrågorna som Common Table Expressions (CTE:er). Lägg märke till att huvudfrågan innehåller frasen SELECT DISTINCT. Utan att filtrera på enbart DISTINCT-matcher riskerar du att få dubbla rader för varje spelad match.

Fortsätt att bygga frågan för att hämta alla matcher som Manchester United spelade under säsongen 2014/2015.

Den här övningen är en del av kursen

Datahantering i SQL

Visa kurs

Övningsinstruktioner

  • Deklarera CTE:erna home och away före huvudfrågan.
  • Koppla dina CTE:er till matchtabellen med LEFT JOIN.
  • Välj relevant data från CTE:erna in i huvudfrågan.
  • Välj datum från match, lagnamn från CTE:erna samt hem- och bortamål från match i huvudfrågan.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

-- 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');
Redigera och kör kod