IniziaInizia gratis

Aggiungi una window function

Fantastico! Ora hai un set di risultati che recupera la data della partita, la squadra di casa, la squadra in trasferta e i gol segnati da ciascuna. Ti manca un ultimo componente della domanda: quanto ha perso male il Manchester United in ogni partita?

Per determinarlo, aggiungiamo una window function alla query principale che classifica le partite in base al valore assoluto della differenza tra home_goal e away_goal. Questo ci permette di confrontare direttamente lo scarto nel punteggio senza dover considerare se il Manchester United giocava in casa o in trasferta!

L’equazione è già completa per te: devi solo completare correttamente la window function!

Questo esercizio fa parte del corso

Manipolazione dei dati in SQL

Visualizza il corso

Istruzioni dell'esercizio

  • Imposta le CTE in modo che le squadre di casa e in trasferta abbiano ciascuna nome, ID e punteggio associati.
  • Seleziona nella query principale date, home team name, away team name, home goals e away goals.
  • Classifica le partite e ordina per differenza di punteggio in ordine decrescente.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

-- 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 columns and and rank the matches by goal difference
SELECT DISTINCT
    ___,
    ___.___ AS home_team,
    ___.___ AS away_team,
    m.home_goal, m.away_goal,
    ___() ___(___ ___ ABS(home_goal - away_goal) ___) as match_rank
-- 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' AND home.outcome = 'MU Loss')
      OR (away.team_long_name = 'Manchester United' AND away.outcome = 'MU Loss'));
Modifica ed esegui il codice