Tóm tắt :trong hướng dẫn này, bạn sẽ học cách sử dụng SQLite COUNT
chức năng lấy số lượng mục trong một nhóm.
Giới thiệu về SQLite COUNT()
chức năng
Hàm COUNT()
là một hàm tổng hợp trả về số lượng các mục trong một nhóm.
Ví dụ:bạn có thể sử dụng COUNT()
chức năng lấy số lượng bản nhạc từ tracks
bảng, số lượng nghệ sĩ từ artists
bảng, v.v.
Phần sau minh họa cú pháp cơ bản của COUNT
chức năng:
COUNT([ALL | DISTINCT] expression);
Code language: SQL (Structured Query Language) (sql)
Đối số
COUNT
hàm hoạt động theo các đối số mà bạn truyền vào nó và tùy chọn ALL
hoặc DISTINCT
mà bạn chỉ định.
Phần sau mô tả ý nghĩa của ALL
và DISTINCT
tùy chọn:
-
ALL
:khi bạn chỉ định tất cả,COUNT()
hàm đếm tất cả các giá trị không rỗng bao gồm các bản sao.COUNT()
hàm sử dụngALL
theo mặc định nếu bạn bỏ qua. -
DISTINCT
:nếu bạn sử dụngDISTINCT
một cách rõ ràng tùy chọn,COUNT
hàm chỉ đếm các giá trị duy nhất và không rỗng.
Biểu thức có thể là một cột hoặc một biểu thức liên quan đến các cột mà hàm COUNT()
được áp dụng.
SQLite cung cấp một cú pháp khác của COUNT()
chức năng:
COUNT(*)
Code language: SQL (Structured Query Language) (sql)
COUNT(*)
hàm trả về số hàng trong bảng, bao gồm các hàng bao gồm NULL và các bản sao.
SQLite COUNT()
minh họa chức năng
Đầu tiên, tạo một bảng có tên t1
có một cột:
CREATE TABLE t1(c INTEGER);
Code language: SQL (Structured Query Language) (sql)
Thứ hai, chèn năm hàng vào t1
bảng:
INSERT INTO t1(c)
VALUES(1),(2),(3),(null),(3);
Code language: SQL (Structured Query Language) (sql)
Thứ ba, truy vấn dữ liệu từ t1
bảng:
SELECT * FROM t1;
Code language: SQL (Structured Query Language) (sql)
Thứ tư, sử dụng COUNT(*)
hàm để trả về số hàng trong t1
bảng:
SELECT COUNT(*) FROM t1;
Code language: SQL (Structured Query Language) (sql)
Như bạn có thể thấy rõ từ đầu ra, tập kết quả bao gồm NULL và các hàng trùng lặp.
Thứ năm, sử dụng COUNT(expression)
để nhận số lượng giá trị không rỗng trong cột c
:
SELECT COUNT(c) FROM t1;
Code language: SQL (Structured Query Language) (sql)
Trong ví dụ này, COUNT(c)
trả về số lượng giá trị không rỗng. Nó tính các hàng trùng lặp là các hàng riêng biệt.
Thứ sáu, sử dụng COUNT(DISTINCT expression)
để nhận số lượng giá trị duy nhất và không rỗng trong cột c
:
SELECT COUNT(DISTINCT c) FROM t1;
Code language: SQL (Structured Query Language) (sql)
SQLite COUNT(*)
ví dụ
Chúng ta sẽ lấy bảng tracks
trong cơ sở dữ liệu mẫu để chứng minh chức năng của COUNT(*)
chức năng.
1) SQLite COUNT(*)
ví dụ
Để lấy số hàng từ tracks
, bạn sử dụng COUNT(*)
chức năng như sau:
SELECT count(*)
FROM tracks;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
count(*)
--------
3503
Code language: plaintext (plaintext)
2) SQLite COUNT(*)
với WHERE
ví dụ mệnh đề
Câu lệnh sau sử dụng COUNT(*)
hàm với WHERE
mệnh đề để tìm số bản nhạc có id album là 10:
SELECT COUNT(*)
FROM tracks
WHERE albumid = 10;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
COUNT(*)
--------
14
3) SQLite COUNT(*)
với GROUP BY
ví dụ mệnh đề
Để nhận tất cả các album và số lượng bản nhạc trong mỗi album, bạn kết hợp COUNT(*)
chức năng với GROUP BY
mệnh đề:
SELECT
albumid,
COUNT(*)
FROM
tracks
GROUP BY
albumid;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
AlbumId COUNT(*)
------- --------
1 10
2 1
3 3
4 8
5 15
6 13
7 12
8 14
9 8
10 14
...
Trong ví dụ này:
- Đầu tiên,
GROUP BY
các bài hát của nhóm mệnh đề theo id album. - Sau đó,
COUNT(*)
hàm trả về số lượng bản nhạc cho mỗi album hoặc nhóm bản nhạc.
4) SQLite COUNT(*)
với HAVING
ví dụ mệnh đề
Phần sau sử dụng COUNT(*)
trong HAVING
mệnh đề tìm anbom có hơn 25 bản nhạc:
SELECT
albumid,
COUNT(*)
FROM
tracks
GROUP BY
albumid
HAVING COUNT(*) > 25
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
AlbumId COUNT(*)
------- --------
23 34
73 30
141 57
229 26
5) SQLite COUNT(*)
với INNER JOIN
ví dụ mệnh đề
Để làm cho đầu ra của truy vấn trên hữu ích hơn, bạn có thể bao gồm cột tên của anbom. Để thực hiện việc này, bạn thêm INNER JOIN
và ORDER BY
mệnh đề cho truy vấn như truy vấn sau:
SELECT
tracks.albumid,
title,
COUNT(*)
FROM
tracks
INNER JOIN albums ON
albums.albumid = tracks.albumid
GROUP BY
tracks.albumid
HAVING
COUNT(*) > 25
ORDER BY
COUNT(*) DESC;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
AlbumId Title COUNT(*)
------- -------------- --------
141 Greatest Hits 57
23 Minha Historia 34
73 Unplugged 30
229 Lost, Season 3 26
SQLite COUNT(DISTINCT expression)
ví dụ
Hãy xem employees
bảng từ cơ sở dữ liệu mẫu.
SELECT
employeeid,
lastname,
firstname,
title
FROM
employees;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
EmployeeId LastName FirstName Title
---------- -------- --------- -------------------
1 Adams Andrew General Manager
2 Edwards Nancy Sales Manager
3 Peacock Jane Sales Support Agent
4 Park Margaret Sales Support Agent
5 Johnson Steve Sales Support Agent
6 Mitchell Michael IT Manager
7 King Robert IT Staff
8 Callahan Laura IT Staff
Để lấy số lượng chức danh, bạn chuyển title
vào cột COUNT()
chức năng như sau:
SELECT COUNT(title)
FROM employees;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
COUNT(title)
------------
8
Tuy nhiên, để nhận được số lượng tiêu đề duy nhất, bạn cần thêm DISTINCT
tùy chọn cho COUNT()
chức năng như được hiển thị trong câu lệnh sau:
SELECT COUNT(DISTINCT title)
FROM employees;
Code language: SQL (Structured Query Language) (sql)
Hãy thử nó
COUNT(DISTINCT title)
---------------------
5
Trong hướng dẫn này, chúng tôi đã chỉ cho bạn cách sử dụng SQLite COUNT()
chức năng đếm số lượng mục trong một nhóm.