SQLite count()
có thể được sử dụng để trả về số hàng trong một tập kết quả.
Nó cũng có thể được sử dụng để trả về số lần một cột nhất định không phải là NULL trong tập kết quả.
Nó có thể được sử dụng theo hai cách. Nếu bạn nhập dấu hoa thị (*
) ký tự đại diện, nó sẽ trả về tổng số hàng trong nhóm. Nếu bạn cung cấp tên của một cột, nó sẽ trả về số lần cột đó không phải là NULL.
Cú pháp
Cú pháp như sau:
count(X)
count(*)
Vì vậy, trong trường hợp này, X
có thể là tên của một cột và dấu hoa thị (*
) ký tự đại diện được sử dụng để chỉ định tổng số hàng trong nhóm.
Ví dụ:count (*)
Dưới đây là một ví dụ cơ bản để minh họa cú pháp dấu hoa thị (*) để trả về số hàng trong bảng.
SELECT count(*) FROM Customer;
Kết quả:
59
Tôi đã chạy truy vấn này trên cơ sở dữ liệu mẫu Chinook và do đó, kết quả là có 59 hàng trong Khách hàng bảng.
Ví dụ:count (X)
Trong ví dụ này, tôi chuyển tên của một cột cụ thể của bảng.
SELECT count(Fax) FROM Customer;
Kết quả:
12
Trong trường hợp này, Fax cột có 12 giá trị không phải NULL.
Nói cách khác, 47 hàng chứa giá trị NULL trong Fax cột.
Sử dụng mệnh đề WHERE
Kết quả của count()
được tính sau bất kỳ WHERE
nào mệnh đề.
SELECT count(Fax)
FROM Customer
WHERE CustomerId <= 5;
Kết quả:
2
Trong trường hợp này, chỉ có hai giá trị không phải NULL trong Fax trong tập kết quả.
Đây là kết quả trông như thế nào với các cột được trả về (và không sử dụng count()
chức năng).
SELECT CustomerId, Fax
FROM Customer
WHERE CustomerId <= 5;
Kết quả:
CustomerId Fax ---------- ------------------ 1 +55 (12) 3923-5566 2 3 4 5 +420 2 4172 5555
Vì vậy, chúng ta có thể thấy rằng chỉ hàng 1 và 5 có giá trị không phải NULL trong Fax cột.
Sử dụng điều khoản LIMIT
Kết quả không được tính sau bất kỳ LIMIT
nào mệnh đề.
SELECT count(Fax)
FROM Customer
LIMIT 5;
Kết quả:
12
Nhưng bạn có thể làm điều gì đó như sau:
SELECT count(Fax)
FROM (SELECT Fax FROM Customer
LIMIT 5);
Kết quả:
2
Kết quả được nhóm
Một trường hợp sử dụng hữu ích cho count()
là sử dụng nó cùng với GROUP BY
để trả về nhiều hàng - mỗi hàng đại diện cho một nhóm - với số lượng các hàng trong nhóm đó.
Đây là một ví dụ.
SELECT
ar.Name,
count(al.Title)
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
WHERE ar.Name LIKE 'D%'
GROUP BY ar.Name
LIMIT 10;
Kết quả:
Name count(al.Title) --------------- --------------- David Coverdale 1 Deep Purple 11 Def Leppard 1 Dennis Chambers 1 Djavan 2 Dread Zeppelin 1
Từ khóa DISTINCT
Bạn có thể thêm DISTINCT
từ khóa để chỉ đếm các giá trị riêng biệt. Nói cách khác, bạn có thể loại bỏ các giá trị trùng lặp trong phép tính.
Đối với các ví dụ về điều này, hãy xem Cách loại bỏ các bản sao khỏi kết quả SQLite Count ().