SQLite count() 函数使用指南

来源:这里教程网 时间:2026-03-25 18:46:29 作者:

SQLite

count()
函数统计一个分组中的所有指定的值的数量并返回。

count()
语法

这里是 SQLite

count()
的语法:

count(expr)

我们通常在 SQLite 中按如下方式使用

count()
函数:

SELECT count(expr), ...FROM table_name[WHERE ...][GROUP BY group_expr1, group_expr2, ...];

参数

expr
必需的。一个要统计数量的的列名或者表达式,或者
*
表示所有的列。

返回值

SQLite

count(*)
函数返回一个分组中的所有行的数量,
count(column_name)
函数返回一个分组中的非空的值的数量。

count()
示例

为了演示

count()
的用法,我们使用以下
UNION
语句模拟一个表:

SELECT 'Tim' name, '20220726' login_dateUNIONSELECT 'Tim' name, '20220725' login_dateUNIONSELECT 'Tim' name, '20220724' login_dateUNIONSELECT 'Tom' name, '20220725' login_dateUNIONSELECT 'Tom' name, '20220723' login_dateUNIONSELECT 'Tom' name, NULL login_date;

name  login_date----  ----------Tim   20220724Tim   20220725Tim   20220726TomTom   20220723Tom   20220725

这里,我们拥有了关于用户登录日期的一些行,并且每一行中是一个用户的一次登录记录。其中,最后一行的登录日期为

NULL

如果我们需要统计每个人的登录次数,请使用以下语句:

SELECT    t.name,    count(login_date) login_timesFROM (    SELECT 'Tim' name, '20220726' login_date    UNION    SELECT 'Tim' name, '20220725' login_date    UNION    SELECT 'Tim' name, '20220724' login_date    UNION    SELECT 'Tom' name, '20220725' login_date    UNION    SELECT 'Tom' name, '20220723' login_date    UNION    SELECT 'Tom' name, NULL login_date) tGROUP BY t.name;

name  login_times----  -----------Tim   3Tom   2

这里,我们发现,用户 Tom 的登录次数是 2 次,这并不正确。 产生这个结果的原因是

count(login_date)
只统计了
login_date
列中非
NULL
的数量。为了纠正这个错误,我们需要使用
count(*)
,如下:

SELECT    t.name,    count(*) login_timesFROM (    SELECT 'Tim' name, '20220726' login_date    UNION    SELECT 'Tim' name, '20220725' login_date    UNION    SELECT 'Tim' name, '20220724' login_date    UNION    SELECT 'Tom' name, '20220725' login_date    UNION    SELECT 'Tom' name, '20220723' login_date    UNION    SELECT 'Tom' name, NULL login_date) tGROUP BY t.name;

name  login_times----  -----------Tim   3Tom   3

相关推荐

热文推荐