信息发布→ 登录 注册 退出

SQL 分组查询如何统计每组最大值和最小值?

发布时间:2025-10-03

点击量:
使用MAX()和MIN()配合GROUP BY可统计每组极值,如SELECT region, MAX(sale_amount), MIN(sale_amount) FROM sales GROUP BY region;多字段分组可扩展为GROUP BY region, YEAR(sale_date),但需注意无法直接获取极值对应完整记录。

在 SQL 中进行分组查询时,如果想统计每组的最大值和最小值,可以使用聚合函数 MAX()MIN() 配合 GROUP BY 子句来实现。

基本语法结构

SELECT 分组字段, MAX(目标字段), MIN(目标字段)
FROM 表名
GROUP BY 分组字段;

这条语句会按指定字段分组,并在每组中找出目标字段的最大值和最小值。

实际示例说明

假设有一张销售记录表 sales,包含以下字段:

  • region:销售区域
  • sale_amount:销售额

你想查看每个区域的最高销售额和最低销售额,可以这样写:

SELECT region, MAX(sale_amount) AS max_sale, MIN(sale_amount) AS min_sale
FROM sales
GROUP BY region;

查询结果将显示每个区域对应的最高和最低销售额。

多字段分组的情况

如果需要按多个字段分组,比如按区域和年份,只需在 GROUP BY 后添加多个字段:

SELECT region, YEAR(sale_date) AS sale_year,
    MAX(sale_amount) AS max_sale,
    MIN(sale_amount) AS min_sale
FROM sales
GROUP BY region, YEAR(sale_date);

这样就能得到每个区域每年的销售额极值。

注意事项

注意 MAX() 和 MIN() 只返回值本身,不会自动带回该值所在行的其他信息(如对应日期或销售人员)。如果需要完整记录信息,需使用窗口函数或子查询进一步处理。

基本上就这些。用好 GROUP BY 搭配 MAX 和 MIN,能快速完成常见分组极值统计。

标签:# 聚合函数  # sql  # select  # 多字  # 多个  # 每组  # 最小值  # 子句  # 就能  # 只需  # 你想  # 并在  # 这条  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!