Master SQL Window Functions Cheatsheet with 223 free flashcards. Study using spaced repetition and focus mode for effective learning in Databases.
Sample card
Running total of amount by user_id ordered by ts?
SUM(amount) OVER (PARTITION BY user_id ORDER BY ts ROWS UNBOUNDED PRECEDING)
Q · 1 of 223
Running total of amount by user_id ordered by ts?
Q · 2 of 223
Difference between ROW_NUMBER, RANK, DENSE_RANK?
Q · 3 of 223
Top N rows per group?
SUM(amount) OVER (PARTITION BY user_id ORDER BY ts ROWS UNBOUNDED PRECEDING)
ROW_NUMBER: unique sequential.
RANK: same value → same rank, leaves gaps.
DENSE_RANK: same value → same rank, no gaps.
SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (PARTITION BY group_id ORDER BY score DESC) rn
FROM t
) x WHERE rn <= 3;
LAG(price) OVER (PARTITION BY symbol ORDER BY ts)
LEAD(price) OVER (PARTITION BY symbol ORDER BY ts)
(price - LAG(price) OVER (ORDER BY ts)) * 100.0 / LAG(price) OVER (ORDER BY ts)
AVG(x) OVER (ORDER BY ts ROWS UNBOUNDED PRECEDING)
AVG(x) OVER (ORDER BY day ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)
RANK() OVER (PARTITION BY category ORDER BY score DESC)
FIRST_VALUE(x) OVER (PARTITION BY g ORDER BY ts) and LAST_VALUE(x) OVER (PARTITION BY g ORDER BY ts ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
Default frame is ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW — LAST_VALUE returns the current row! Override the frame.
PERCENT_RANK() OVER (ORDER BY score) — value 0..1, percentile within partition.
Flashcards
Flip to reveal
Focus Mode
Spaced repetition
Multiple Choice
Test your knowledge
Type Answer
Active recall
Learn Mode
Multi-round mastery
Match Game
Memory challenge