Trong SQLite, total()
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ề 0.0.
Hàm này tương tự như sum()
, ngoại trừ cách nó xử lý các đầu vào NULL. Khi không có giá trị nào không phải NULL, thì sum()
trả về NULL (thay vì 0.0 như total()
hàm trả về).
Ví dụ
Hãy xem xét bảng sau.
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
Chúng ta có thể sử dụng total()
chức năng để nhận tổng số giá.
SELECT total(Price) FROM Products;
Kết quả:
738.22
Mặc dù giá của hàng cuối cùng là NULL, nhưng total()
hàm có thể xử lý điều đó, vì nó thêm tất cả các giá trị không phải NULL và bỏ qua giá trị NULL.
Tất cả các giá trị NULL
Nếu không có giá trị nào không phải NULL, thì kết quả là 0.0.
SELECT total(Price)
FROM Products
WHERE ProductId = 5;
Kết quả:
0.0
Đây là nơi total()
và sum()
khác nhau. Trong trường hợp này, sum()
sẽ trả về NULL.
total()
hàm luôn trả về một giá trị dấu phẩy động.
Hãy nhớ rằng điều này không tuân theo tiêu chuẩn SQL. Nếu bạn muốn sử dụng mã tuân thủ tiêu chuẩn, hãy sử dụng sum()
.
Nhận Tổng của một Tập hợp con
Đây là một ví dụ khác sử dụng WHERE
mệnh đề để trả về một tập hợp con của bảng.
SELECT total(Price)
FROM Products
WHERE ProductId > 2;
Kết quả:
209.27
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 total(Price)
FROM Products
WHERE Price < 150;
Kết quả:
348.77