Kom igångKom igång gratis

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

Visa kurs

Övningsinstruktioner

  • Kör en fråga som lägger till en extra kolumn i datamängden kallad running_total. Kolumnen running_total beräknar SUM() av skillnaden mellan stationstider enligt kolumnen diff_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()
Redigera och kör kod