Invalid use of group function解決辦法——MySQL


Invalid use of group function即“集函數的無效用法”

錯句示例:SELECT sname AS '優秀學生姓名',AVG(score) as '平均成績' FROM grade_info WHERE AVG(score)>90 GROUP BY sno;

正確寫法:SELECT sname AS '優秀學生姓名',AVG(score) as '平均成績' FROM grade_info GROUP BY sno HAVING AVG(score) > 90 ;

說明:

GROUP BY,顧名思義:根據...分組,在SQL中常根據指定字段分組(指定字段內容相同是為一組),然后針對組進行相關操作

WHERE和HAVING的區別在於:

where 子句的作用是對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾數據,where條件中不能包含聚組函數,使用where條件過濾出特定的行。

having 子句的作用是篩選滿足條件的組,即在分組之后過濾數據,條件中經常包含聚組函數,使用having 條件過濾出特定的組,也可以使用多個分組標准進行分組。

示例錯句的問題就在於:WHERE子句中使用集函數。

另外需要注意的地方是,SQL語法:

SELECT [DISTINCT|DISINCTROW|ALL] select_expression,... -- 查詢結果
[FROM table_references -- 指定查詢的表
[WHERE where_definition] -- where子句,查詢數據的過濾條件
[GROUP BY col_name,...] -- 對[匹配where子句的]查詢結果進行分組
[HAVING where_definition] -- 對分組后的結果進行條件限制
[ORDER BY{unsigned_integer | col_name | formula} [ASC | DESC],...] -- 對查詢結果進行排序
[LIMIT [offset,] rows] -- 對查詢的顯示結果進行條數限制
[PROCEDURE procedure_name] --查詢存儲過程返回的結果集數據
]

查詢語句書寫順序須遵循上述規則。
轉自https://blog.csdn.net/bestforxu/article/details/51131234


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM