PARTITION BY op een kolom
Met de clausule PARTITION BY kun je aparte "vensters" berekenen op basis van kolommen waarop je je resultaten wilt opdelen. Zo kun je bijvoorbeeld één kolom maken die een algemeen gemiddelde van gescoorde goals per seizoen berekent.
In deze oefening maak je een gegevensset van wedstrijden gespeeld door Legia Warszawa (Warsaw League), het hoogst geklasseerde team in Polen, en vergelijk je hun prestaties per wedstrijd met het seizoensgemiddelde.
Waar zie je meer uitschieters? Zijn dat de thuis- of uitwedstrijden van Legia Warszawa?
Deze oefening maakt deel uit van de cursus
Gegevens manipuleren in SQL
Oefeninstructies
- Maak de twee windowfuncties af die het gemiddelde aantal thuis- en uitgoals berekenen. Partitioneer de windowfuncties op season om aparte gemiddelden per seizoen te berekenen.
- Filter de query zodat alleen wedstrijden van Legia Warszawa worden opgenomen,
id = 8673.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
SELECT
date,
season,
home_goal,
away_goal,
CASE WHEN hometeam_id = 8673 THEN 'home'
ELSE 'away' END AS warsaw_location,
-- Calculate separately the average home and away goals scored, partitioned by season
___(___) ___(___ ___ ___) AS season_homeavg,
___(___) ___(___ ___ ___) AS season_awayavg
FROM match
-- Filter the data set for Legia Warszawa (id 8673) matches only
WHERE
___ = ___
OR ___ = ___
ORDER BY (home_goal + away_goal) DESC;