Skip to main content

SQLite SUM:返回一组值中的SUM值

SQLite求和函数简介

SUM函数是一个聚合函数,它返回组中非空值或唯一不同值的和。

以下表达式说明了SUM函数的语法:

SUM([ALL | DISTINCT] expression);

SUM函数默认使用ALL子句。这意味着在求和函数执行计算时,会考虑所有输入值,无论是否重复。

如果要计算唯一值之和,必须在表达式中显式指定DISTINCT子句。

如果所有输入的非空值都是整数,那么SUM函数的结果就是整数。如果任何输入值既不是整数也不是空值,则SUM函数的结果是浮点值。

当且仅当所有输入值均为NULL时,SUM函数的结果为NULL。

如果发生整数溢出错误,且所有输入值都为NULL或整数,SUM函数将抛出整数溢出异常。

SQLite求和函数示例

我们将使用示例数据库中的tracks表进行演示。

要获取“轨迹”表中所有轨迹的总长度,请使用SUM函数作为以下语句:

SELECT
SUM(milliseconds)
FROM
tracks;

试试看

SQLite SUM function example

带有GROUP BY子句的SQLite SUM函数

要计算每个相册的总长度,需要使用GROUP BY子句的SUM函数。

首先,GROUPBY子句按专辑对一组曲目进行分组。然后,SUM函数计算每个专辑的曲目长度之和。

以下陈述说明了这一想法:

SELECT
AlbumId,
SUM(milliseconds)
FROM
tracks
GROUP BY
AlbumId;

试试看

SQLite SUM with GROUP BY clause example

SQLite SUM函数和内部连接子句示例

要在输出中包含专辑标题,请使用内部join子句将tracks表连接到albums表,如下所示:

SELECT
tracks.albumid,
title,
SUM(milliseconds)
FROM
tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
GROUP BY
tracks.albumid,
title;

试试看

SQLite SUM with INNER JOIN clause example

SQLite SUM函数和HAVING子句示例

可以使用HAVING子句中的SUM函数根据指定的条件筛选组。

例如,以下语句获取总长度大于1000000毫秒的所有相册:

SELECT
tracks.albumid AlbumId,
Title,
SUM(milliseconds)
FROM
tracks
INNER JOIN albums ON albums.albumid= tracks.albumid
GROUP BY
tracks.albumid,
title
HAVING
SUM(milliseconds) > 1000000;

试试看

SQLite SUM with HAVING clause example

在本教程中,我们向您介绍了SQLite SUM函数,该函数返回组中的值之和。