avg(salary)" 回傳「錯誤 1111 (HY000):無效使用群組功能」? " /> avg(salary)" 回傳「錯誤 1111 (HY000):群組功能使用無效」? " />
嘗試使用以下方式列出收入高於平均薪資的員工查詢「從工資>的員工中選擇*」 avg(salary)」返回「ERROR 1111 (HY000): Invalid use of group function。
聚合函數,例如本例中的 AVG(),不能除非滿足特定條件,否則可以在 WHERE 子句中使用聚合。根據 SQL 標準,如果在具有 HAVING 子句或選擇清單的子查詢中使用聚合,則聚合可以出現在 WHERE 子句中,並且聚合列是外部參考。
要解決該錯誤,請重寫在WHERE 子句中使用子查詢進行查詢:
select * from staff where salary > (select avg(salary) from staff)
此查詢使用子查詢來計算平均工資,然後將其與每個員工的工資進行比較。
或者,考慮使用HAVING 子句進行過濾聚合資料:
select deptid,COUNT(*) as TotalCount from staff group by deptid having count(*) > 2
此查詢中的HAVING子句將結果限制為擁有兩名以上員工的部門。
以上是為什麼「select* from Staff where salary > avg(salary)」回傳「ERROR 1111 (HY000): Invalid Use of Group Function」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!