对聚合函数(sum,count,min,max,avg)和having的作⽤和理
解
having诞⽣:
confidence是什么意思mysql中,当我们⽤到聚合函数,如sum,count后,⼜需要筛选条件时,having就派上⽤场了,因为WHERE是在聚合前筛选记录
的,having和group by是组合着⽤的,下⾯通过实例介绍下⽤法:
例如:
lect product,sum(price) from orderitem group by product;
wgq
欲望都市疯狂的缠绵
这⾥使⽤了聚合函数sum,如果需要在这张表的基础上⾯再次进⾏过滤,⽤到having是最好的选择。(为什么说最好,因为肯定还有其他⽅案可以进⾏条件过滤,⽐如,嵌套,from⼦查询:
lect product,aa from ( lect product,sum(price) aa from orderitem group by product)tt where tt.aa>5000;
望洋兴叹翻译
)
但是使⽤having,也能达到同样的效果,
HAVING 只会在检索出所有记录之后才对结果集进⾏过滤
步骤还简短:
lect product ,sum(price) from orderitem group by product having sum(price)>5000;
电话留言
mistaken
having的排序由上理解:
1.from tab免费翻译在线
2.where ...
4.lect ...
5.having ...英语陪同翻译
结论:不能再where⼦句中使⽤聚合函数
formulating
聚集函数也叫列函数,它们都是基于整列数据进⾏计算的,⽽where⼦句则是对数据⾏进⾏过滤的,在筛选过程中依赖“基于已经筛选完毕的数据得出的计算结果”是⼀种悖论,这是⾏不通的。更简单地说,因为聚集函数要对全列数据时⾏计算,因⽽使⽤它的前提是:结果集已经确定!
lpg是什么
⽽where⼦句还处于“确定”结果集的过程中,因⽽不能使⽤聚集函数。
与where⼦句不能出现聚集函数正相反的是,我们⼏乎看不到不使⽤聚集函数的having⼦句。为什么?因为在⽔平⽅向上根据外部指定条件的筛选(也就是对⾏的筛选),where⼦句可以独⽴完成,剩下的往往都是需要根据结果集⾃⾝的统计数据进⼀步筛选了,这时,⼏乎都需要通过having⼦句配合聚集函数来完成。