本文整理自网络,侵删。
目录
- where过滤数据
- having存在的意义
- having的日常运用
- having查重
- having统计筛选:达到某一指标的集合
- 必须group by后使用
- 具体执行顺序的梳理
- 举一个简单例子理解这里的执行顺序
- 总结
where过滤数据
要说having,首先要说一下where,这个语句非常常用且重要。
在我们查询数据库时,不可能每一次都把所有数据拿出来(上亿的数据量,啥服务器也扛不住啊)
通常都是取出前10条,按时间取前30条,按名称、年龄、金额等数据表中有的字段的值进行筛选;也有可能筛选后数据还是比较多,会进行一个分页处理。
这里where的作用就必不可少了!只要是表中存在的字段值类型,写成布尔值结果的表达式即可,多条件与、或、非运算都可以。
可以说,项目中用到的SQL语句,99.9%都包含Where语句的,实用程度可想而知。
但是它却有无法实现的一些功能,这时,having就要出场了~
having存在的意义
SQL语句中,如果需要计算总数、累加、求均值等聚合运算,并筛选出总数未达到或达到的部分集合
Where语句无法替代的,比如
在Where 中使用 Count时,异常报错如下
图片内容翻译: Where中不能出现聚合运算,只能写到having或者select中
因此,可以这么说,having可以做到where做不到的效果
having的日常运用
通常有having的地方都有聚合运算,
having查重
SELECT CompanyName FROM Company GROUP BY CompanyName HAVING count(1) > 1
having统计筛选:达到某一指标的集合
例如: 公司里2021年度总收入 < 120000 的员工筛选出来(然后涨工资~)
SELECT * FROM Payroll WHERE DATEPART(Year, CreateTime) = 2021 GROUP BY EmployeeId HAVING SUM(Wages) < 120000
必须group by后使用
通过上面的两个简单例子,可以看出,having都是写在group by后面
相关阅读 >>
更多相关阅读请进入《sql》频道 >>
数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » msSQL中having的用处详解
标签:sql
相关推荐
评论
管理员已关闭评论功能...