云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

必须掌握的 SQL SERVER 聚合函数(sql聚合函数注意事项)

jxf315 2025-03-26 13:22:58 教程文章 32 ℃

以下是 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


五、注意事项

  1. 非聚合字段必须包含在 GROUP BY 中
    错误示例:
  • SELECT Customer, OrderID, SUM(Amount) -- OrderID 未分组! FROM Orders GROUP BY Customer;
    1. 修正方法:移除 OrderID 或将其加入 GROUP BY。
    2. 聚合函数忽略 NULL 值
      例如:COUNT(字段) 不统计 NULL,但 COUNT(*) 统计所有行。

    六、总结

    函数

    作用

    示例场景

    COUNT()

    统计行数/数量

    计算订单总数

    SUM()

    求和

    计算销售总额

    AVG()

    求平均值

    计算平均工资

    MAX()

    找最大值

    找到最高分

    MIN()

    找最小值

    找到最低温度



    Tags:

    最近发表
    标签列表