Löpande summor med fönsterfunktioner i SQL
En fönsterfunktion liknar en aggregeringsfunktion, men till skillnad från den returnerar den ett värde för varje rad i datamängden – inte en enda rad per grupp.
Du kan kombinera aggregering med fönsterfunktioner. En löpande summa med en fönsterfunktion är enklare att skriva än motsvarande lösning med joins, och frågan kan också köras betydligt snabbare.
En tabell kallad schedule med kolumnerna train_id, station, time och diff_min finns tillgänglig. Kolumnen diff_min anger den förflutna tiden mellan den aktuella stationen och nästa station på linjen.
Den här övningen är en del av kursen
Introduktion till Spark SQL i Python
Övningsinstruktioner
- Kör en fråga som lägger till en extra kolumn i datamängden kallad
running_total. Kolumnenrunning_totalberäknarSUM()av skillnaden mellan stationstider enligt kolumnendiff_min. - Kör frågan och visa resultatet.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# Add col running_total that sums diff_min col in each group
query = """
SELECT train_id, station, time, diff_min,
____(____) OVER (PARTITION BY ____ ORDER BY ____) AS running_total
FROM schedule
"""
# Run the query and display the result
spark.____(query).show()