Menu
CoddyTech

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 revenue

Nế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.

challenge icon

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
quiz iconTự kiểm tra

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

Tự luyện tập: Playground SQL