以下是 SQL Server 中常用聚合函数的使用方法及示例,通俗易懂:
一、什么是聚合函数?
聚合函数对一组值进行计算,返回单个汇总值。常用于统计、求和、平均值等场景。
二、常用聚合函数及示例
假设有一张 Orders 订单表,数据如下:
OrderID | Customer | Amount |
1 | 张三 | 100 |
2 | 李四 | 200 |
3 | 张三 | 150 |
4 | 王五 | 300 |
1.COUNT()
统计行数或非空值的数量。
-- 统计所有订单数量
SELECT COUNT(*) AS TotalOrders FROM Orders;
结果:TotalOrders = 4
-- 统计不重复的客户数量(去重)
SELECT COUNT(DISTINCT Customer) AS UniqueCustomers FROM Orders;
结果:UniqueCustomers = 3
2.SUM()
对数值列求和。
-- 计算所有订单的总金额
SELECT SUM(Amount) AS TotalAmount FROM Orders;
结果:TotalAmount = 750
3.AVG()
计算数值列的平均值。
-- 计算订单平均金额
SELECT AVG(Amount) AS AvgAmount FROM Orders;
结果:AvgAmount = 187.5
4.MAX() / MIN()
找最大值或最小值。
-- 找到最大订单金额
SELECT MAX(Amount) AS MaxAmount FROM Orders;
结果:MaxAmount = 300
-- 找到最小订单金额
SELECT MIN(Amount) AS MinAmount FROM Orders;
结果:MinAmount = 100
三、配合 GROUP BY 分组统计
聚合函数常与 GROUP BY 一起使用,按指定字段分组统计。
示例:统计每个客户的订单总金额
SELECT Customer, SUM(Amount) AS Total
FROM Orders
GROUP BY Customer;
结果:
Customer | Total |
张三 | 250 |
李四 | 200 |
王五 | 300 |
四、HAVING 子句过滤分组结果
HAVING 用于过滤分组后的数据(类似 WHERE,但用于聚合结果)。
示例:筛选总金额超过 200 的客户
SELECT Customer, SUM(Amount) AS Total
FROM Orders
GROUP BY Customer
HAVING SUM(Amount) > 200;
结果:
Customer | Total |
张三 | 250 |
王五 | 300 |
五、注意事项
- 非聚合字段必须包含在 GROUP BY 中
错误示例:
- 修正方法:移除 OrderID 或将其加入 GROUP BY。
- 聚合函数忽略 NULL 值
例如:COUNT(字段) 不统计 NULL,但 COUNT(*) 统计所有行。
六、总结
函数 | 作用 | 示例场景 |
COUNT() | 统计行数/数量 | 计算订单总数 |
SUM() | 求和 | 计算销售总额 |
AVG() | 求平均值 | 计算平均工资 |
MAX() | 找最大值 | 找到最高分 |
MIN() | 找最小值 | 找到最低温度 |