← Tous les exercices
LAST_VALUE : la fenêtre explicite change tout
Partie 4 · ★★★
Avec le cadre par défaut (jusqu'à la ligne courante), LAST_VALUE renvoie simplement la valeur courante. Pour retrouver la dernière valeur de tout l'historique de l'actif sur chaque ligne, il faut étendre la fenêtre vers le futur.
Renvoie ticker, date, dernier (le dernier prix de l'actif sur chaque ligne), trié par ticker, date.
import sqlite3 con = sqlite3.connect(":memory:") con.execute("CREATE TABLE prices(date TEXT, ticker TEXT, close REAL)") A = [100, 102, 101, 105, 107, 108] B = [50, 49, 51, 50, 52, 55] for i in range(6): d = f"2024-01-0{i + 1}" con.execute("INSERT INTO prices VALUES (?, ?, ?)", (d, "A", A[i])) con.execute("INSERT INTO prices VALUES (?, ?, ?)", (d, "B", B[i])) sql = """ SELECT ticker, date, LAST_VALUE(close) OVER (PARTITION BY ticker ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND ___) AS dernier FROM prices ORDER BY ticker, date """ rows = con.execute(sql).fetchall()
Ctrl/⌘+Entrée