实例详解Group by和Having子句

    作者:课课家教育更新于: 2019-03-06 13:51:03

      在介绍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子句只能对分组后的属性进行筛选。

      小编结语:

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

课课家教育

未登录