【sql】MySQL的having用法以及和group by使用

您所在的位置:网站首页 sql中聚合函数的使用注意事项 【sql】MySQL的having用法以及和group by使用

【sql】MySQL的having用法以及和group by使用

2024-07-11 05:22| 来源: 网络整理| 查看: 265

where、聚合函数、having 在from后面的执行顺序: where > 聚合函数(sum,min,max,avg,count ) > having

若引入聚合函数来对group by 结果进行过滤 则只能用having。 1.HAVING语句通常与GROUP BY语句联合使用,用来过滤由GROUP BY语句返回的记录集。 2.HAVING语句的存在弥补了WHERE关键字不能与聚合函数联合使用的不足。 语法: 注意后者顺序不可颠倒

SELECT column1, column2, … column_n, aggregate_function (expression) FROM tables WHERE predicates --(不可使用别名) GROUP BY column1, column2, … column_n --(可使用别名) HAVING condition1 … condition_n --(可使用别名) ORDER BY id; --(可使用别名)

如果想查询平均分高于80分的学生记录可以这样写:

SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore FROM student GROUP BY id HAVING AVG(score)>=80; 或 SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore FROM student GROUP BY id HAVING avgscore>=80;

在这里,如果用WHERE代替HAVING就会出错。 注意事项 : 1、where 后不能跟聚合函数,因为where执行顺序大于聚合函数。 2、where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。 3、having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数(注意:条件要在查询的结果集中否者报错),使用having 条件显示特定的组,也可以使用多个分组标准进行分组。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3