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中文網其他相關文章!