下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

实例详解Group by和Having子句

作者:课课家教育     来源: http://www.kokojia.com点击数:2300发布时间: 2019-03-06 13:51:03

标签: 数据库group byhaving

  在介绍group by和having子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM,COUNT,MAX,AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。

  这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数。

  通过使用group by子句,可以让SUM和COUNT这些函数对属于一组的数据起作用。当你指定group by region时,属于同一个region(地区)的一组数据将只能返回一行值,也就是说,表中所有除region(地区)外的字段,只能通过SUM,COUNT等聚合函数运算后返回一个值。

  having子句可以让我们筛选成组后的各组数据,where子句在聚合前先筛选记录.也就是说作用在group by子句和having子句前.

  而having子句在聚合后对组记录进行筛选

  在了解了相关概念之后,下面小编就给大家分享一下Groupby和Having子句的小例子,具体详情如下所示:

  使用关系:

  1.Having子句(是对分组之后的数据进行过滤,所以使用having时必须用groupby先分组)

  Having中的组函数可以不是select中的组函数

  利用having子句过滤分组的行

  注意:having要先过滤掉不需要的记录,然后再进行分组操作,提高效率。having子句可以过滤组函数结果或是分组的信息,且写在groupby子句后

  规则:

  2.Groupby子句(利用groupby子句分组数据,当select语句中使用到组函数和字段一起连用时会用到groupby,否则会出现错误)

  Groupby把select查询的结果集分成几个小组,这个groupby子句可以跟在where后面且在having前面。

  Groupby子句也会触发排序操作,会按分组字段排序。

  Select[组函数和分组的字段].....from表名groupby[字段1],[字段2],。。。。。。;

  在经过上面的学习之后,让我们通过实例来操作一下。

  表结构:

实例详解Group by和Having子句_数据库_group by_having_课课家教育

  要求:

  查询有多个员工的工资不低于2000的部门编号(就是说如果一个部门的员工大于2000的人数有两个或两个以上就查询出来)

  sql语句:

sql语句:

  说明:

  where子句和having子句都是用来筛选条件用的,不同的是,where子句只能对分组前的属性进行删选,而having子句只能对分组后的属性进行筛选。

 where子句和having子句都是用来筛选条件用的,不同的是,where子句只能对分组前的属性进行删选,而having子句只能对分组后的属性进行筛选。

  小编结语:

  更多精彩内容尽在课课家教育!

赞(14)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程