SQL 计算函数
计算函数
在 SQL 中,计算函数用于对数据进行各种数学计算和统计分析。这些函数可以分为聚合函数和取整函数。以下是对这些函数的详细讲解。
知识点
1. 聚合函数
聚合函数用于对一组数据进行计算,返回一个单一的结果。以下是一些常用的聚合函数:
SUM(column)
:计算数值列的总和。AVG(column)
:计算数值列的平均值。COUNT(column)
:计算列中非NULL
值的数量。MAX(column)
:返回列中的最大值。MIN(column)
:返回列中的最小值。
2. 取整函数
取整函数用于对数值进行取整操作。以下是一些常用的取整函数:
CEIL(number)
或CEILING(number)
:返回大于或等于给定数值的最小整数。FLOOR(number)
:返回小于或等于给定数值的最大整数。ROUND(number, decimals)
:将数值四舍五入到指定的小数位数。
另:在 SQL 中,CAST
函数用于将一个值显式地转换为指定的数据类型。虽然 CAST
本身不是专门的取整函数,但它可以与取整函数结合使用,以实现更灵活的数据类型转换和取整操作。
CAST(expression AS data_type)
expression
:要转换的值或表达式。data_type
:目标数据类型,例如SIGNED
、DECIMAL
、VARCHAR
等。
示例
示例 1:聚合函数
假设有一个 employees
表,包含以下数据:
1 | Alice | Smith | 60000 | 101 |
2 | Bob | Johnson | 70000 | 101 |
3 | Charlie | Brown | NULL | 102 |
4 | David | Davis | 80000 | 102 |
5 | Eve | White | 90000 | 103 |
计算所有员工的总工资:
SELECT SUM(salary) AS total_salary
FROM employees;
结果:
300000 |
计算所有员工的平均工资:
SELECT AVG(salary) AS average_salary
FROM employees;
结果:
75000 |
计算非 NULL
工资的员工数量:
SELECT COUNT(salary) AS count_salary
FROM employees;
结果:
4 |
计算最高工资:
SELECT MAX(salary) AS max_salary
FROM employees;
结果:
90000 |
计算最低工资:
SELECT MIN(salary) AS min_salary
FROM employees;
结果:
60000 |
示例 2:取整函数
假设 employees
表包含以下数据:
1 | Alice | Smith | 60000 |
2 | Bob | Johnson | 70000 |
3 | Charlie | Brown | 55000 |
4 | David | Davis | 85000 |
5 | Eve | White | 95000 |
SQL 查询
我们将使用 CEIL
、FLOOR
和 ROUND
函数来计算每个员工工资的上限值、下限值和四舍五入值(单位:万元)。
SELECT
first_name,
last_name,
CEIL(salary / 10000) AS ceil_salary,
FLOOR(salary / 10000) AS floor_salary,
ROUND(salary / 10000) AS round_salary
FROM
employees;
执行结果
执行上述查询后,结果如下:
Alice | Smith | 7 | 6 | 6 |
Bob | Johnson | 8 | 7 | 7 |
Charlie | Brown | 6 | 5 | 6 |
David | Davis | 9 | 8 | 9 |
Eve | White | 10 | 9 | 10 |
-
CEIL(salary / 10000)
:- 计算工资除以 10000 后的上限值,即向上取整。
- 例如,
60000 / 10000 = 6.0
,向上取整为 7。 55000 / 10000 = 5.5
,向上取整为 6。
-
FLOOR(salary / 10000)
:- 计算工资除以 10000 后的下限值,即向下取整。
- 例如,
60000 / 10000 = 6.0
,向下取整为 6。 55000 / 10000 = 5.5
,向下取整为 5。
-
ROUND(salary / 10000)
:- 计算工资除以 10000 后的四舍五入值。
- 例如,
60000 / 10000 = 6.0
,四舍五入为 6。 55000 / 10000 = 5.5
,四舍五入为 6。85000 / 10000 = 8.5
,四舍五入为 9。