SQL 的 GROUP BY 和聚合函数:常见陷阱
SQL 的 GROUP BY
子句对于汇总数据非常强大,但它经常会引起混乱,特别是关于哪些列可以出现在 SELECT
语句中。
一个常见的错误是尝试选择非聚合列而不将它们包含在 GROUP BY
子句中。 例如:
<code class="language-sql">SELECT * FROM order_details GROUP BY order_no;</code>
此查询将失败。 使用 GROUP BY
时,任何不受聚合函数约束的列(例如 SUM
、COUNT
、AVG
、MIN
、MAX
)必须 包含在 GROUP BY
中列表。
要纠正此问题,请在 GROUP BY
子句中包含所有非聚合列:
<code class="language-sql">SELECT order_no, order_price FROM order_details GROUP BY order_no, order_price;</code>
或者,使用聚合函数汇总每组的数据:
<code class="language-sql">SELECT order_no, SUM(order_price) AS total_price FROM order_details GROUP BY order_no;</code>
聚合函数计算每个组的单个值,即使您没有在 GROUP BY
子句中列出每一列,也可以检索汇总信息。 这是避免错误并从分组数据中获得有意义的结果的关键。 核心原则是:SELECT
列表中的所有列必须聚合或出现在 GROUP BY
子句中。
以上是SQL中使用GROUP BY和聚合函数时如何避免错误?的详细内容。更多信息请关注PHP中文网其他相关文章!