You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中聚合函数是否必须与GROUP BY分组语句搭配使用?

SQL聚合函数与分组操作绑定规则解答

聚合函数并非必须与分组(GROUP BY)操作绑定使用,具体规则可以分为两类场景:

  • 无分组强制要求的场景:如果SELECT查询的返回列里只有聚合函数,不存在任何需要单独展示的非聚合普通字段,完全可以省略GROUP BY。此时聚合函数会直接对所有符合WHERE筛选条件的全量数据做计算,最终返回单条汇总结果。
    例如统计全平台所有订单的总交易金额,以下写法完全符合SQL标准语法,不需要加分组:
    SELECT
      SUM(unit_price * quantity) AS all_total_price
    FROM orders o
    JOIN order_items oi
      ON o.order_id = oi.order_id
    
  • 必须搭配分组的场景:如果SELECT查询的返回列里同时存在非聚合的普通字段、聚合函数,就必须搭配GROUP BY操作,且所有SELECT里出现的非聚合普通字段都要写入分组维度,否则会触发标准SQL语法报错。
    你提供的示例就属于这类场景:需要返回非聚合字段customer_id,同时要统计每个客户的消费总额,因此必须按customer_id做分组,对应写法如下:
    SELECT
      customer_id,
      SUM(unit_price * quantity) AS total_price
    FROM orders o
    JOIN order_items oi
      ON o.order_id = oi.order_id
    GROUP BY customer_id
    

注:部分数据库(如MySQL)存在特殊兼容逻辑,手动关闭ONLY_FULL_GROUP_BY校验开关时,即使非聚合字段没写在GROUP BY里也能执行,但这类写法不属于SQL标准规范,返回的字段值存在不确定性,生产环境不推荐使用。

内容的提问来源于stack exchange,提问作者BarBaro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 11:09:23