sql中where和having的用法
一、报错
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 ;
三、区别
WHERE和HAVING的区别在于:
where
子句的作用是对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。
having
子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。