Ce avem OVER aici?
Funcțiile de fereastră îți permit să creezi un RANK al datelor în funcție de orice variabilă dorești să folosești pentru sortare. La configurare, va trebui să specifici coloana sau calculul pe baza căruia se determină rangul. Acest lucru se face prin includerea unei clauze ORDER BY în interiorul clauzei OVER(). Mai jos găsești un exemplu:
SELECT
id,
RANK() OVER(ORDER BY home_goal) AS rank
FROM match;
În acest exercițiu, vei crea un set de date cu meciuri clasate în funcție de ligile care înscriu, în medie, cele mai multe goluri într-un meci.
Acest exercițiu face parte din cursul
Manipularea datelor în SQL
Instrucțiuni pentru exercițiu
- Folosește
SELECTpentru a extrage numele ligii și media totalului de goluri înscrise din tabeleleleagueșimatch. - Completează funcția de fereastră astfel încât să calculeze
RANK()-ul mediei golurilor înscrise pentru toate ligile din baza de date. - Ordonează rangul
OVERmedia totalului de goluri înscrise acasă și în deplasare.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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 ___;