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。
查看7道真题和解析