前面感觉真的好乱,想哪,写哪。这里慢慢整理……

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在分组后,执行选择条件。

最新文章

  1. 调用CachedRowSetImpl类时出现错误
  2. html css 编写规范
  3. 超级有用的各类web常用手册
  4. 案例分享:电信行业零售业务CRM架构
  5. CentOS安装NodeJS v0.10.25 + Express
  6. 第十二章 管理类型(In .net4.5) 之 操作字符串
  7. JavaScript高级程序设计(五): js的关键字instanceof和typeof使用
  8. NSOperationQueue和GCD的区别
  9. vs2010入门程序和出错问题解决方案
  10. AC自动机模板1(【洛谷3808】)
  11. SwaggerUI--SosoApi
  12. return,break,continue三者区别
  13. Android学习(二)
  14. 漫画 | Redis常见面试问题(一)
  15. Python入门-编写抓取网站图片的爬虫-正则表达式
  16. 【Java】 剑指offer(52) 两个链表的第一个公共结点
  17. 27. Remove Element C++移除元素
  18. 运行metamascara时出现的一些错误
  19. QWidget编写的安卓app
  20. 处理 Java Tomcat 的“Cannot allocate memory”错误

热门文章

  1. 暴雪的hash算法[翻译]
  2. Robot Framework(三)创建测试用例
  3. CentOS 7添加开机启动服务/脚本
  4. 路飞学城Python-Day186
  5. 解决value toDF is not a member of org.apache.spark.rdd.RDD (spark2.1 )
  6. IOS - Display a base64 image within a UIImageView: 显示一个base64的图片
  7. 提高生产力:SpringMVC中,使用扩展数据类型TypedMap接收Web请求参数
  8. ExtJs之Ext.XTemplate:数组填充,访问父对象
  9. rabbitMQ学习笔记(三) 消息确认与公平调度消费者
  10. HDU 2138