Cosa c'è di OVER qui?
Le window function ti permettono di creare un RANK delle informazioni in base a qualsiasi variabile tu voglia usare per ordinare i dati. Per impostarlo, devi specificare quale colonna/calcolo usare per determinare il tuo rank. Questo si fa includendo una clausola ORDER BY all'interno della clausola OVER(). Ecco un esempio:
SELECT
id,
RANK() OVER(ORDER BY home_goal) AS rank
FROM match;
In questo esercizio creerai un insieme di dati con le partite classificate (ranked) in base alle leghe che, in media, segnano più gol in una partita.
Questo esercizio fa parte del corso
Manipolazione dei dati in SQL
Istruzioni dell'esercizio
SELECTil nome della lega e la media dei gol totali segnati daleagueematch.- Completa la window function in modo che calcoli il
RANK()della media dei gol segnati in tutte le leghe del database. - Ordina il rank con
OVERin base alla media dei gol segnati in casa e in trasferta.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
SELECT
-- Select the league name and average goals scored
___ AS league,
___(___ + ___.away_goal) AS avg_goals,
-- Rank each league over the average goals
___ ___(___ ___ AVG(___.home_goal + ___)) AS league_rank
FROM league AS l
LEFT JOIN match AS m
ON l.id = m.country_id
WHERE m.season = '2011/2012'
GROUP BY l.name
-- Order the query by the rank you created
ORDER BY ___;