如何在 WHERE 子句中正確使用聚合函數?
當聚合函數使用時,會出現「Invalid use of group function」錯誤(例如本例中的 AVG())在 WHERE 子句中使用不正確。聚合函數對一組值進行匯總,不能直接在 WHERE 子句中使用。
要解決此問題,有兩個選擇:
在WHERE 子句中使用子查詢WHERE 子句:
select * from staff where salary > (select avg(salary) from staff)
在此範例中,子查詢(select avg(salary) from Staff) 計算平均工資並將其指派給臨時變數。然後,WHERE 子句將每位員工的薪資與該平均值進行比較。
將 HAVING 子句與 GROUP BY 一起使用:
select deptid, COUNT(*) as TotalCount from staff group by deptid having COUNT(*) > 2
在此範例中, HAVING 子句用於指定 group by deptid 的條件。這裡的 HAVING 子句檢查每個部門內的員工數量是否大於 2。請注意,HAVING 與 GROUP BY 一起使用,對分組的行執行計算。
使用這兩種方法中的任何一種都可以確保聚合正確使用函數並傳回正確的結果。
以上是如何在 WHERE 子句中正確使用聚合函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!