SQL基础:SQL Server中聚合函数的用法

1. 聚合函数介绍

在 SQL 中,聚合函数可以对一组数据进行计算并返回一个单一的值,例如计算平均值、总和、最大值等。

SQL Server 包含了多个聚合函数,例如 SUM、AVG、COUNT、MAX、MIN 等。

1.1. SUM 函数

SUM 函数可以计算指定列的总和。

SELECT SUM(salary) FROM employee;

上述语句会返回 employee 表中所有员工的薪水总和。

1.2. AVG 函数

AVG 函数可以计算指定列的平均值。

SELECT AVG(salary) FROM employee;

上述语句会返回 employee 表中所有员工的薪水平均值。

1.3. COUNT 函数

COUNT 函数可以统计指定列的行数。

SELECT COUNT(*) FROM employee;

上述语句会返回 employee 表中所有员工的行数。

1.4. MAX 函数

MAX 函数可以返回指定列的最大值。

SELECT MAX(salary) FROM employee;

上述语句会返回 employee 表中所有员工的最高薪水。

1.5. MIN 函数

MIN 函数可以返回指定列的最小值。

SELECT MIN(salary) FROM employee;

上述语句会返回 employee 表中所有员工的最低薪水。

2. 分组和聚合

除了对整个表进行聚合操作外,我们还可以根据某一列的值对表进行分组,并对每组进行聚合操作。

2.1. GROUP BY 子句

GROUP BY 子句可以根据一个或多个列对表进行分组。

SELECT department, COUNT(*) FROM employee GROUP BY department;

上述语句会返回以 department 列为分组标准,每个组的行数。

2.2. HAVING 子句

HAVING 子句可以在对分组后的结果集进行过滤。

SELECT department, AVG(salary) FROM employee GROUP BY department HAVING AVG(salary) > 5000;

上述语句会返回以 department 列为分组标准,平均薪水大于 5000 的组的平均薪水。

2.3. 组合使用

GROUP BY 子句和 HAVING 子句可以组合使用。

SELECT department, AVG(salary) FROM employee GROUP BY department HAVING COUNT(*) > 5 AND AVG(salary) > 5000;

上述语句会返回以 department 列为分组标准,组内员工数大于 5 且平均薪水大于 5000 的组的平均薪水。

3. CASE 表达式

CASE 表达式可以根据不同的条件返回不同的值。

SELECT name, 

CASE

WHEN salary >= 8000 THEN '高'

WHEN salary >= 5000 THEN '中'

ELSE '低'

END AS '薪水等级'

FROM employee;

上述语句会返回每个员工的薪水等级(高、中、低),根据薪水区间自动分级。

4. 总结

聚合函数是 SQL 中常用的功能,用于对一组数据进行计算和统计。GROUP BY 子句和 HAVING 子句可以将表分组并对每个组进行聚合操作。CASE 表达式可以根据不同的条件返回不同的值。在实际业务中,聚合函数和分组操作常常用于数据报表的制作。

数据库标签