SQL学习——基础语句(4)
前面感觉真的好乱,想哪,写哪。这里慢慢整理……
SQL Having 语句
还是前面的那两个表:
grade表:
student表:
我们需要查找这里的s_id下的gradeValue的和,这就要分组查询了 :select sum(gradeValue) as nums from grade group by s_id
这里分组查找完毕,但是需要筛选其中gradeValue的和大于100的。怎么筛选。一般都是用 where做子句来筛选,如 where 字段>80;
但是这里的where关键字无法与聚合函数一起使用,才产生了having。
eg: select sum(gradeValue) as nums from grade group by s_id having nums>100;
扯到这,提一下聚合函数: sum(),avg(),count(),max(),min() 等,这些函数呢,都是作用在多条数据上,产生的结果。这里呢就不能用where了。
SQL where group by ,having 区别?
having子句:
having 子句和group by 一起使用时,实现结果是先分组,然后在进行条件查找。SQL 语句编写顺序也一个样,having子句必须写在group by
子句后面。
where子句:
where子句和group by 一起使用时,是先执行 where语句的,然后在走分组语句。SQL编写,where必须在group by 前面。
看看图:
where +group by
select s_id ,gradeValue from grade where gradeValue>80 group by s_id
having +group by
select s_id ,gradeValue from grade group by s_id having gradeValue>80
通过2个图很容易看出,where在分组前就执行,效果没有达到预期,having在分组后,执行选择条件。
最新文章
- 调用CachedRowSetImpl类时出现错误
- html css 编写规范
- 超级有用的各类web常用手册
- 案例分享:电信行业零售业务CRM架构
- CentOS安装NodeJS v0.10.25 + Express
- 第十二章 管理类型(In .net4.5) 之 操作字符串
- JavaScript高级程序设计(五): js的关键字instanceof和typeof使用
- NSOperationQueue和GCD的区别
- vs2010入门程序和出错问题解决方案
- AC自动机模板1(【洛谷3808】)
- SwaggerUI--SosoApi
- return,break,continue三者区别
- Android学习(二)
- 漫画 | Redis常见面试问题(一)
- Python入门-编写抓取网站图片的爬虫-正则表达式
- 【Java】 剑指offer(52) 两个链表的第一个公共结点
- 27. Remove Element C++移除元素
- 运行metamascara时出现的一些错误
- QWidget编写的安卓app
- 处理 Java Tomcat 的“Cannot allocate memory”错误
热门文章
- 暴雪的hash算法[翻译]
- Robot Framework(三)创建测试用例
- CentOS 7添加开机启动服务/脚本
- 路飞学城Python-Day186
- 解决value toDF is not a member of org.apache.spark.rdd.RDD (spark2.1 )
- IOS - Display a base64 image within a UIImageView: 显示一个base64的图片
- 提高生产力:SpringMVC中,使用扩展数据类型TypedMap接收Web请求参数
- ExtJs之Ext.XTemplate:数组填充,访问父对象
- rabbitMQ学习笔记(三) 消息确认与公平调度消费者
- HDU 2138