SQL Server聚合函数
封面图
•
2025-12-23
•
SQL Server
247
0
0
0
SQL Server 中的 **聚合函数(Aggregate Functions)** 是用于对一组值进行计算并返回单个值的函数。它们常用于 `GROUP BY` 子句中,或者在 `SELECT` 语句中对某一列进行统计分析。 以下是 SQL Server 中常用的聚合函数及其用途: --- ## 📌 常用 SQL Server 聚合函数 | 函数名称 | 说明 | 示例 | |------------------|----------------------------------------------------|----------------------------------------------------------------------| | `AVG()` | 计算数值列的平均值 | `SELECT AVG(Salary) FROM Employees;` | | `COUNT()` | 计算行数 | `SELECT COUNT(*) FROM Employees;` | | `SUM()` | 计算数值列的总和 | `SELECT SUM(Sales) FROM SalesData;` | | `MAX()` | 返回最大值 | `SELECT MAX(Price) FROM Products;` | | `MIN()` | 返回最小值 | `SELECT MIN(Price) FROM Products;` | | `COUNT_BIG()` | 类似于 `COUNT()`,但返回 `BIGINT` 类型 | `SELECT COUNT_BIG(*) FROM LargeTable;` | | `GROUPING()` | 用于判断某列是否是分组的“虚拟”列(在 `ROLLUP`、`CUBE` 中) | `SELECT GROUPING(Category) AS IsGrouping, Category, SUM(Sales) FROM ... GROUP BY ... WITH ROLLUP;` | | `STDEV()` | 计算标准差(总体) | `SELECT STDEV(Salary) FROM Employees;` | | `STDEVP()` | 计算标准差(总体) | `SELECT STDEVP(Salary) FROM Employees;` | | `VAR()` | 计算方差(样本) | `SELECT VAR(Salary) FROM Employees;` | | `VARP()` | 计算方差(总体) | `SELECT VARP(Salary) FROM Employees;` | | `STRING_AGG()` | 将多行的字符串合并为一个字符串(SQL Server 2017+) | `SELECT STRING_AGG(Name, ', ') AS Names FROM Employees;` | | `XMLAGG()` | 在 XML 上执行聚合操作(需配合 `FOR XML` 使用) | `SELECT XMLAGG(...) FROM ... FOR XML PATH(...);` | --- ## ✅ 示例:使用聚合函数与 `GROUP BY` ```sql SELECT Department, AVG(Salary) AS AverageSalary, SUM(Salary) AS TotalSalary, MAX(Salary) AS MaxSalary, MIN(Salary) AS MinSalary FROM Employees GROUP BY Department; ``` --- ## 🧠 注意事项 - 聚合函数通常不能直接出现在 `WHERE` 子句中,而应放在 `HAVING` 子句中。 - 如果需要对多个列进行聚合,可以使用 `GROUP BY` 或子查询。 - 对于 `NULL` 值,大多数聚合函数会自动忽略(如 `AVG`, `SUM`, `COUNT` 等)。 --- ## 🔍 附加功能:`GROUPING SETS`, `ROLLUP`, `CUBE` 这些是更高级的分组方式,允许你对数据进行多层次的汇总: ### 示例:使用 `ROLLUP` ```sql SELECT Department, JobTitle, SUM(Salary) AS TotalSalary FROM Employees GROUP BY Department, JobTitle WITH ROLLUP; ``` 这将生成每个部门和职位的工资总和,并包括部门级别的汇总和整个表的总计。 --- 如果你有具体的场景或需要某个函数的详细说明,欢迎继续提问!
上一篇:
php备份mysql数据库
下一篇:
怎么去掉脸上的油脂球?
标题录入,一次不能超过6条
留言
评论