Tổng lũy kế
Thuộc phần Vượt ra ngoài kiến thức cơ bản trong hành trình SQL của Coddy. Bài học 25 trên 27.
Tổng lũy kế là SUM trên một cửa sổ có ORDER BY: cách này biến phép tổng hợp thành phép tính tăng dần theo từng hàng.
SELECT day, amount,
SUM(amount) OVER (ORDER BY day) AS running_total
FROM revenueNếu không có ORDER BY, cửa sổ sẽ bao phủ mọi hàng và bạn sẽ thấy tổng cộng ở mỗi dòng. Khi có mệnh đề này, cửa sổ mở rộng từng hàng một theo thứ tự đó, nên mỗi hàng chỉ tính chính nó và tất cả các hàng trước nó.
Thêm PARTITION BY để đặt lại tổng lũy kế cho từng nhóm, ví dụ tổng lũy kế doanh thu theo khu vực, tính từng ngày.
Thử thách
DễCác bảng và cột hiện có:
revenue:region,day,amount
Trả về region, day, amount và region_running_total: tổng lũy kế của amount cho khu vực đó tính đến và bao gồm ngày này. Tổng lũy kế cần đặt lại cho mỗi khu vực.
Dùng PARTITION BY trên cửa sổ. Sắp xếp theo region, rồi đến day.
Tự làm thử
SELECT region, day, amount,
-- thêm cột region_running_total vào đây
FROM revenue
ORDER BY region, day
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Vượt ra ngoài kiến thức cơ bản
6Công thức phân tích dữ liệu
Top N trong mỗi nhómTỷ lệ trên tổngTổng lũy kếGiữ lại một hàng cho mỗi khóaÔn tập: khách hàng hàng đầuTự luyện tập: Playground SQL