Skip to main content

SQLite计数函数:对组中的项目进行计数

SQLite COUNT()函数简介

函数COUNT()是一个聚合函数,返回组中的项数。

例如,可以使用COUNT()函数从“轨迹”表中获取轨迹数,从“艺术家”表中获取艺术家数,等等。

下面说明了COUNT函数的基本语法:

COUNT([ALL | DISTINCT] expression);

论据

COUNT函数的行为取决于传递给它的参数以及指定的选项ALL或DISTINCT。

以下描述了所有不同选项的含义:

表达式可以是列,也可以是包含应用函数COUNT()的列的表达式。

SQLite提供了COUNT()函数的另一种语法:

COUNT(*)

COUNT(*)函数返回表中的行数,包括空行和重复行。

SQLite COUNT()函数说明

首先,创建一个名为t1的表,该表有一列:

CREATE TABLE t1(c INTEGER);

其次,在t1表中插入五行:

INSERT INTO t1(c)
VALUES(1),(2),(3),(null),(3);

第三,从t1表中查询数据:

SELECT * FROM t1;

第四,使用COUNT(*)函数返回t1表中的行数:

SELECT COUNT(*) FROM t1;

从输出中可以清楚地看到,结果集包括空行和重复行。

第五,使用COUNT(表达式)获取c列中非空值的数量:

SELECT COUNT(c) FROM t1;

在本例中,计数(c)返回非空值的数量。它将重复的行计为单独的行。

第六,使用COUNT(不同的表达式)获得c列中唯一和非空值的数量:

SELECT COUNT(DISTINCT c) FROM t1;

SQLite计数(*)示例

我们将获取示例数据库中的表轨迹,以演示COUNT(*)函数的功能。

1) SQLite计数(*)示例

要从tracks表中获取行数,可以使用COUNT(*)函数,如下所示:

SELECT count(*)
FROM tracks;

试试看

count(*)
--------
3503

2) SQLite COUNT(*)和WHERE子句示例

下面的语句使用带有WHERE子句的COUNT(*)函数来查找唱片集id为10的曲目数:

SELECT COUNT(*)
FROM tracks
WHERE albumid = 10;

试试看

COUNT(*)
--------
14

3) SQLite COUNT(*)和GROUP BY子句示例

要获取所有相册和每个相册中的曲目数,请将COUNT(*)函数与GROUP BY子句结合使用:

SELECT
albumid,
COUNT(*)
FROM
tracks
GROUP BY
albumid;

试试看

AlbumId  COUNT(*)
------- --------
1 10
2 1
3 3
4 8
5 15
6 13
7 12
8 14
9 8
10 14
...

在本例中:

4) SQLite COUNT(*)与HAVING子句示例

下面使用HAVING子句中的COUNT(*)来查找包含25首以上曲目的相册:

SELECT
albumid,
COUNT(*)
FROM
tracks
GROUP BY
albumid
HAVING COUNT(*) > 25

试试看

AlbumId  COUNT(*)
------- --------
23 34
73 30
141 57
229 26

5) SQLite COUNT(*)与内部连接子句示例

为了使上述查询的输出更有用,可以包括相册的“名称”列。为此,可以向查询中添加内部联接和ORDER BY子句,如下所示:

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;

试试看

AlbumId  Title           COUNT(*)
------- -------------- --------
141 Greatest Hits 57
23 Minha Historia 34
73 Unplugged 30
229 Lost, Season 3 26

SQLite计数(不同表达式)示例

让我们看看示例数据库中的employees表。

SELECT
employeeid,
lastname,
firstname,
title
FROM
employees;

试试看

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

要获取职位标题的数量,请将标题列传递给COUNT()函数,如下所示:

SELECT COUNT(title)
FROM employees;

试试看

COUNT(title)
------------
8

但是,要获得唯一标题的数量,需要向COUNT()函数添加DISTINCT选项,如下语句所示:

SELECT COUNT(DISTINCT title)
FROM employees;

试试看

COUNT(DISTINCT title)
---------------------
5

在本教程中,我们向您展示了如何使用SQLite COUNT()函数来计算组中的项目数。