SQLite SUM() 函数返回表达式值不为 NULL 的表达式的求和值。
如果没有非 NULL 输入行,则 SUM () 返回 NULL。
如果所有非 NULL 输入均为整数,则 SUM() 的结果为整数值。
如果 SUM() 的任何输入既不是整数也不是NULL,则返回一个浮点值,该值是数学和的近似值。
如果所有输入都是整数或 NULL 并且在任何点发生整数溢出,则此函数将引发"整数溢出"异常
注意:另请参阅TOTAL() 函数。
语法
使用 SUM() 函数的语法如下:
SELECT SUM(column_name)
FROM table_name
WHERE condition(s);
SQLite GROUP BY 子句用于当使用一列或多列时,将结果表排列成相同的组。请注意,必须在 GROUP BY 子句中包含那些未封装在 SUM() 函数中的列名。请参阅以下语法:
SELECT column1, column2, ...
SUM(column_name)
FROM table_name
WHERE condition(s)
GROUP BY column1, column2, ...;
参数
column1, column2, ... | 指定未封装在 SUM() 函数中的列名。它必须包含在 GROUP BY 子句中。 |
column_name | 指定求和值需要计算的列或表达式 |
table_name | 指定需要检索记录的表名。 |
WHERE condition | 可选。 指定条件。根据指定条件选择记录。 |
返回值
返回给定表达式的总和值。
示例 - 单列
考虑一个名为 Employee 的数据库表,其中包含以下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
获取所有员工的工资总额如果年龄大于 25 岁,则可以使用以下查询:
SELECT SUM(Salary) AS TotalSalary
FROM Employee
WHERE Age > 25;
这将产生如下所示的结果:
TotalSalary |
---|
11700 |
示例 -使用 DISTINCT
DISTICT 子句可以与 SUM() 函数一起使用。例如 - 要获取不同(唯一)工资的总工资,可以使用以下代码:
SELECT SUM(DISTINCT Salary) AS TotalUniqueSalary
FROM Employee;
这将产生如下所示的结果:
TotalUniqueSalary |
---|
11650 |
示例 - 使用公式
SUM() 函数中包含的表达式不必是单个字段。此函数还可以使用公式。例如 - 考虑向每位员工发放奖金(工资的 15%),要计算奖金总额,可以使用以下查询:
SELECT SUM(Salary * 0.15) AS TotalBonusAmount
FROM Employee;
这将产生结果如下图:
TotalBonusAmount |
---|
2617.5 |
示例 - 使用 GROUP BY
要按年龄分组获取员的总工资,可以使用以下查询:
SELECT Age, SUM(Salary) AS TotalSalaryByAge
FROM Employee
GROUP BY Age;
上述代码的结果将是:
Age | TotalSalaryByAge |
---|---|
24 | 2750 |
25 | 3000 |
27 | 2800 |
28 | 5800 |
30 | 3100 |