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 表达式可以根据不同的条件返回不同的值。在实际业务中,聚合函数和分组操作常常用于数据报表的制作。