Tổng tích lũy SQL

Tong Tich Luy Sql



Trong SQL, tổng tích lũy đề cập đến một phương thức cho phép chúng ta tính tổng số đang chạy của một cột số trong bảng cơ sở dữ liệu. Tổng tích lũy có tác dụng trong nhiều tình huống khác nhau, chẳng hạn như theo dõi tiến trình hoặc tính giá trị trung bình luân phiên của một giá trị nhất định.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách triển khai và sử dụng tổng tích lũy trong SQL bằng nhiều phương pháp và kỹ thuật khác nhau.







Dữ liệu mẫu

Để hiểu rõ hơn cách chúng ta có thể triển khai và sử dụng tổng tích lũy, chúng ta hãy bắt đầu bằng cách thiết lập một bảng cơ bản với dữ liệu mẫu. Điều này cho phép chúng tôi chứng minh hoạt động của tất cả các phương pháp một cách nhanh chóng và hiệu quả trong bài đăng này.



Bắt đầu bằng cách tạo một bảng cơ bản để lưu trữ thông tin sản phẩm.



TẠO sản phẩm BẢNG (
sản phẩm_id INT KHÓA CHÍNH,
tên_sản phẩm VARCHAR ( 255 ) ,
giá thập phân ( 10 , 2 )
) ;





Điều này sẽ tạo một bảng mới gọi là “sản phẩm” lưu trữ id sản phẩm, tên sản phẩm và giá của từng sản phẩm.

Sau đó, chúng ta có thể tiến hành thêm dữ liệu mẫu như trong câu lệnh chèn ví dụ sau:



CHÈN VÀO sản phẩm ( id_sản phẩm, tên_sản phẩm, giá )
GIÁ TRỊ
( 1 , 'Mã Visual Studio' , 10 giờ 00 ) ,
( 2 , 'Văn bản tuyệt vời' , 80,00 ) ,
( 3 , 'Chuyên nghiệp PyCharm' , 199,00 ) ,
( 4 , 'IDE nhật thực' , 30:00 ) ,
( 5 , 'IntelliJ IDEA Cuối cùng' , 699,00 ) ,
( 6 , 'Máy tính để bàn GitHub' , 20:00 ) ,
( 7 , 'Phần mềm chờ' , 10 giờ 00 ) ,
( số 8 , 'Xcode' , 660,00 ) ,
( 9 , 'NetBeans' , 0,00 ) ,
( 10 , 'Nguyên tử' , 60,00 ) ;

LƯU Ý: Dữ liệu đã cho hoàn toàn là hư cấu. Nó không đại diện cho giá thực tế của bất kỳ mặt hàng nào được liệt kê.

Bảng kết quả như sau:

Tổng tích lũy SQL (Tự tham gia)

Một trong những kỹ thuật mà chúng ta có thể sử dụng để tính tổng tích lũy trên một cột nhất định là sử dụng phương pháp tự nối. Một ưu điểm của phương pháp này là nó hoạt động trong hầu hết các cơ sở dữ liệu SQL, ngay cả những cơ sở dữ liệu không hỗ trợ các chức năng của Window.

Lấy ví dụ về bảng “sản phẩm” trước đó. Chúng ta có thể tạo tổng tích lũy của cột giá như được minh họa trong truy vấn sau:

LỰA CHỌN
p1.product_id,
p1.product_name,
p1.price,
TỔNG ( p2.giá ) NHƯ tích lũy_tổng
TỪ
sản phẩm p1
THAM GIA
sản phẩm p2
TRÊN
p1.product_id > = p2.product_id
NHÓM THEO
p1.product_id,
p1.product_name,
p1.giá
ĐẶT BỞI
p1.product_id;

Bạn có nhận thấy hoạt động của truy vấn không? Nếu không, hãy theo dõi chúng tôi khi chúng tôi giải thích từng bước.

Trong truy vấn mẫu đã cho, chúng tôi bắt đầu bằng cách tạo hai bí danh – “p1” và “p2” – cho bảng “products” cho phép chúng tôi thực hiện tự tham gia.

Sau đó, chúng tôi tiến hành nối “p1” và “p2” với điều kiện “product_id” của “p1” lớn hơn hoặc bằng “product_id” của “p2”.

Trong bước tiếp theo, chúng ta gọi hàm sum() về cơ bản tính toán tổng tích lũy của các giá cho mỗi hàng.

Cuối cùng, chúng tôi nhóm các kết quả bằng cách sử dụng “product_id”, “product_name” và “price” rồi sắp xếp kết quả.

Sau thao tác này, chúng ta sẽ có tổng tích lũy cho mỗi bản ghi như được minh họa trong bảng kết quả sau:

Như bạn có thể thấy, chúng ta nhận được tổng của tất cả các hàng trước đó. Hàng cuối cùng phải chứa tổng của tất cả các hàng trước đó.

Tổng tích lũy SQL (Hàm cửa sổ)

Một cách hiệu quả và thiết thực hơn để tính tổng tích lũy trong SQL là tận dụng các hàm cửa sổ bất cứ khi nào nó được hỗ trợ.

Nếu bạn có cơ sở dữ liệu như SQL Server, PostgreSQL hoặc MySQL phiên bản 8.0 trở lên thì đây là phương pháp hữu ích và được khuyên dùng nhất để xác định tổng tích lũy của một cột nhất định.

Hãy xem ví dụ như được minh họa trong phần sau:

LỰA CHỌN
ID sản phẩm,
tên sản phẩm,
giá,
TỔNG ( giá ) QUA ( ĐẶT HÀNG THEO sản phẩm_id ) NHƯ tích lũy_tổng
TỪ
các sản phẩm;

Trong trường hợp này, chúng tôi bắt đầu bằng cách chọn các cột “product_id”, “product_name” và “price” từ bảng “products”.

Sau đó, chúng ta sử dụng hàm SUM() làm hàm cửa sổ bằng mệnh đề OVER.

Trong mệnh đề OVER, chúng ta chỉ định mệnh đề ORDER BY xác định thứ tự tính tổng tích lũy.

Điều này sẽ trả về một đầu ra tương tự như sau:

Bạn sẽ nhận thấy rằng việc sử dụng các chức năng của cửa sổ sẽ mạch lạc, hiệu quả và dễ đọc hơn so với việc sử dụng tính năng tự liên kết.

Phần kết luận

Trong hướng dẫn này, chúng ta đã tìm hiểu tất cả về tổng tích lũy trong SQL. Chúng tôi cũng đã đề cập đến cách sử dụng các hàm tự liên kết và cửa sổ để thực hiện tính tổng tích lũy trong SQL.