首页 > 数据库 > mysql教程 > GROUP BY 和聚合函数如何在 SQL 查询中交互?

GROUP BY 和聚合函数如何在 SQL 查询中交互?

DDD
发布: 2025-01-13 10:53:44
原创
194 人浏览过

How Do GROUP BY and Aggregate Functions Interact in SQL Queries?

理解 SQL 的 GROUP BY 和聚合函数:更清晰的图片

SQL 的数据聚合能力很强大,但是 GROUP BY 和聚合函数之间的交互可能会让人困惑。一个常见的错误是使用 SELECT 后在 GROUP BY 语句中选择非聚合列,而没有在 GROUP BY 子句中明确列出它们。

例如:

<code class="language-sql">SELECT *
FROM order_details
GROUP BY order_no</code>
登录后复制

此查询将失败,并生成错误,因为“*”不是 GROUP BY 子句的一部分。 解决方案是在 GROUP BY 子句中列出所有非聚合列。

但是,使用聚合函数会改变行为:

<code class="language-sql">SELECT SUM(order_price)
FROM order_details
GROUP BY order_no</code>
登录后复制

这成功地将每个 order_no 的订单价格相加,即使 order_price 子句中没有 GROUP BY 也是如此。 聚合函数计算每个组中的所有行,无论相应的列是否在 GROUP BY 列表中。

为避免误解,请记住,按属性分组后,您无法直接访问 GROUP BY 表达式中未包含的其他属性。 只有聚合函数才能通过基于组的计算来访问这些属性。

标准 SQL(与 MySQL 不同)要求在 GROUP BY 子句中显式包含所有非聚合列。 您可以按列的子集进行分组,并仍然选择非聚合列,只要这些列是 GROUP BY.

的一部分

最后,使用具有不同分组基础的多个聚合函数可能会导致不可预测或不明确的结果。 仔细组合 GROUP BY 和聚合函数,确保在运行查询之前您的预期结果是明确的。

以上是GROUP BY 和聚合函数如何在 SQL 查询中交互?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板