数据库学习第七课

来源:互联网 发布:yum 安装lnmp 编辑:程序博客网 时间:2024/05/18 02:58

1,group   by

group by 之后select中只能出现分组后的整体信息,不能出现组内的详细信息

格式:group  by   字段的集合

功能:把表中的记录按照字段分成不同的组

例子:查询不同部门的平均工资

         select   deptno ,avg(sal)  as  "部门平均工资"   from  emp

注意:

         理解:group   by   a,b,c的用法

                 先按照a分组,如果a相同,在按照b分组,如果b相同,再按c分组

                 最终统计的是最小分组的信息

 

2,having 

      1.having子句是用来对分组之后的数据进行过滤,因此使用having时通常都会先使用group by

      2.如果没使用group by 但使用了having ,则意味着having把所有的记录当做一组来进行过滤,极少用

          select   count(*)   from   emp   having   avg(sal)>1000

      3.having子句出现的字段必须是分组之后的组的整体信息

         having子句不允许出现组内的详细信息

      4.尽管select字段可以出现别名,但是having子句中不允许出现别名

         但是having子句中不能出现字段的别名,只能使用字段最原始的名字

      5. having和where的异同

          相同点:都是对数据过滤,只保留有效的数据

         不同点:where是对原始的记录过滤  having是对分组之后的记录过滤

         where必须写在having的前面,顺序不可颠倒,否则运行出错

 

0 0
原创粉丝点击