Window function tính toán trên tập rows liên quan mà không collapse rows như GROUP BY. Nó phù hợp ranking, running total, moving average, dedup theo row_number hoặc so sánh row hiện tại với row trước.
Ví dụ lấy order mới nhất mỗi user:
sql
SELECT * FROM (
SELECT orders.*, row_number() OVER (PARTITION BY user_id ORDER BY created_at DESC) AS rn
FROM orders
) t
WHERE rn = 1;Window function thường giúp tránh query N+1 hoặc logic xử lý ranking ở app.