ÎncepețiÎncepe gratuit

Combinarea CTE-urilor

Acum că ai creat cele două subinterogări care identifică echipele adverse de acasă și de deplasare, este momentul să restructurezi interogarea folosind subinterogările home și away ca Common Table Expressions (CTE-uri). Vei observa că interogarea principală include expresia SELECT DISTINCT. Fără a selecta doar meciurile DISTINCT, ai putea obține înregistrări duplicate pentru fiecare meci jucat.

Continuă să construiești interogarea pentru a extrage toate meciurile jucate de Manchester United în sezonul 2014/2015.

Acest exercițiu face parte din cursul

Manipularea datelor în SQL

Vezi cursul

Instrucțiuni pentru exercițiu

  • Declară CTE-urile home și away înainte de interogarea principală.
  • Unește CTE-urile cu tabelul match folosind un LEFT JOIN.
  • Selectează datele relevante din CTE-uri în interogarea principală.
  • Selectează data din match, numele echipelor din CTE-uri și golurile de acasă/deplasare din match în interogarea principală.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

-- 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');
Editează și rulează codul