首页 >数据库 >mysql教程 >在 SQL 中使用聚合函数时如何避免'not a GROUP BY expression”错误?

在 SQL 中使用聚合函数时如何避免'not a GROUP BY expression”错误?

Susan Sarandon
Susan Sarandon原创
2025-01-13 06:15:43451浏览

How Can I Avoid

理解 SQL 的 GROUP BY 子句和聚合函数

使用 SQL 的 GROUP BY 子句通常会导致对分组后可访问哪些属性感到困惑。让我们澄清一下:

GROUP BY 和非聚合列

分组后尝试访问非聚合列会导致“不是 GROUP BY 表达式”错误。这是因为每个组可能包含多行,并且非聚合列中的值在这些行之间会有所不同。

聚合函数:深入了解

相反,聚合函数(如 SUMMAXAVG 等)即使在应用 GROUP BY 后也可以访问每个组内的基础列。 他们计算整个组的单个汇总值。

示例:

考虑这个查询:

<code class="language-sql">SELECT *
FROM order_details
GROUP BY order_no;</code>

此查询将失败,因为它尝试选择所有列,而不在非聚合列上使用聚合函数,例如 order_price.

但是,这是一个有效的查询:

<code class="language-sql">SELECT SUM(order_price)
FROM order_details
GROUP BY order_no;</code>

在这里,SUM 处理每个组,对 order_price 值进行求和,得出每个 order_no 的总价格。

GROUP BY

中包含非聚合列

要在分组后访问非聚合列,请将它们包含在 GROUP BY 子句中:

<code class="language-sql">SELECT order_no, SUM(order_price)
FROM order_details
GROUP BY order_no;</code>

这会正确检索每个 order_no 及其总数 order_price

以上是在 SQL 中使用聚合函数时如何避免'not a GROUP BY expression”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn