Window function · PARTITION BY · ORDER BY · frame
Mỗi dòng nhìn qua một cửa sổ của riêng nó
Partition và khung (frame) của window function
Các đơn của khách 1 và khách 2 được chia thành hai partition; với dòng hiện tại là đơn 13, khung từ đầu partition tới dòng hiện tại cho lũy kế 10810000, khung 1 PRECEDING cho 10111000, và lũy kế bắt đầu lại ở partition mới.
KẾT QUẢ VẪN ĐỦ 9 DÒNG · MỖI DÒNG CÓ CỬA SỔ RIÊNG
order_id
ngay
tong_tien
luy_ke
PARTITION · customer_id = 1
1
2025-01-12
699000
699000
4
2025-02-14
7881000
8580000
13
2025-07-08
2230000
10810000
25
2025-12-24
24980000
35790000
37
2026-09-02
9640000
45430000
PARTITION · customer_id = 2
2
2025-01-20
26990000
26990000
8
2025-04-22
20140000
47130000
22
2025-11-11
9492500
56622500
34
2026-06-15
1640000
58262500
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
khung = từ dòng đầu partition tới dòng hiện tại
SUM = 699000 + 7881000 + 2230000 = 10810000
ROWS BETWEEN 1 PRECEDING AND CURRENT ROW
SUM = 7881000 + 2230000 = 10111000
Sang partition mới, lũy kế bắt đầu lại:
đơn 2 chỉ thấy chính nó, luy_ke = 26990000
BA PHẦN TRONG OVER (…) · ĐỌC THEO THỨ TỰ
1
PARTITION BY customer_id
chia dòng thành từng nhóm
2
ORDER BY ngay
xếp thứ tự trong mỗi nhóm
3
ROWS BETWEEN …
chọn khung cho từng dòng
© tiennhm