SQLite sum()
hàm trả về tổng của tất cả các giá trị không phải NULL trong một nhóm.
Nếu không có giá trị nào không phải NULL, thì nó trả về NULL.
Về cơ bản, hàm này cho phép bạn cộng tất cả các giá trị trong một tập kết quả hoặc một bảng.
Ví dụ
Dưới đây là một ví dụ để chứng minh cách sử dụng của nó.
SELECT sum(Price) FROM Products;
Kết quả:
738.22
Ví dụ này có thể vô nghĩa nếu bạn không thể thấy các giá trị thực tế trong bảng.
Đây là một truy vấn trả về tất cả các hàng trong bảng đó.
SELECT * FROM Products;
Kết quả:
ProductId ProductName Price ---------- --------------------- ---------- 1 Blue Widgets (6 Pack) 389.45 2 Widget Holder 139.5 3 Widget Opener 89.27 4 Foobar Set 120.0 5 Red Widget
Vì vậy, sum()
chỉ cần thêm tất cả các giá trị trong Giá cột.
Lưu ý rằng giá của hàng cuối cùng là NULL. Vậy là được rồi. sum()
hàm chỉ cần thêm tất cả các giá trị không phải NULL.
Giá trị NULL
Nếu không có giá trị nào không phải NULL, thì kết quả là NULL.
SELECT sum(Price)
FROM Products
WHERE ProductId = 5;
Kết quả:
(Cái đó cố ý để trống, vì nó trả về NULL).
Điều này khác với cách SQLite total()
hàm xử lý các giá trị NULL (nó trả về 0,0). Cả sum()
và total()
làm điều tương tự, ngoại trừ sự khác biệt này.
Tập hợp kết quả nhỏ hơn
Ví dụ đầu tiên đã thêm tất cả các hàng trong bảng. Nhưng nó không nhất thiết phải là toàn bộ bảng. Như đã thấy trong ví dụ “NULL”, bạn cũng có thể sử dụng WHERE
mệnh đề để thêm một tập hợp con các giá trị trong bảng.
Đây là một ví dụ khác sử dụng WHERE
mệnh đề.
SELECT sum(Price)
FROM Products
WHERE ProductId < 3;
Kết quả:
528.95
Lần này, nó đang thêm các giá trị không phải NULL, vì vậy tôi nhận được kết quả không phải NULL.
Đây là một cột khác lọc theo cùng một cột mà tôi đang thêm.
SELECT sum(Price)
FROM Products
WHERE Price > 100;
Kết quả:
648.95
Đầu vào không phải số nguyên
Nếu bất kỳ đầu vào nào không phải là số nguyên hoặc NULL thì sum()
trả về giá trị dấu phẩy động có thể là giá trị gần đúng với tổng thực.
Bạn có thể nhận được một số kết quả không mong muốn trong những trường hợp như vậy.
Dưới đây là một ví dụ cố gắng thêm một loạt các số fax.
Trước tiên, hãy xem danh sách các số fax.
SELECT Fax FROM Customer
WHERE Fax IS NOT NULL;
Kết quả:
Fax ------------------ +55 (12) 3923-5566 +420 2 4172 5555 +55 (11) 3033-4564 +55 (11) 3055-8131 +55 (21) 2271-7070 +55 (61) 3363-7855 +1 (780) 434-5565 +1 (604) 688-8756 +1 (650) 253-0000 +1 (425) 882-8081 +1 (212) 221-4679 +1 (408) 996-1011
Bây giờ đây là những gì sẽ xảy ra nếu tôi cố gắng thêm chúng.
SELECT sum(Fax)
FROM Customer;
Kết quả:
701.0
Trong trường hợp này, nó dường như đã thêm tất cả các tiền tố.
Đây là những gì sẽ xảy ra nếu tôi sử dụng sum()
trên một cột chuỗi.
SELECT sum(ProductName)
FROM Products;
Kết quả:
0.0
Từ khóa DISTINCT
Bạn có thể thêm DISTINCT
từ khóa để chỉ thêm các giá trị riêng biệt. Để thực hiện việc này, hãy sử dụng sum(DISTINCT X)
ở đâu X
là tên cột.
Xem Cách chỉ thêm các giá trị riêng biệt với SQLite Sum () để làm ví dụ.