日期:2014-05-16  浏览次数:20483 次

Oracle数据库之SQL之Group by总结

       前言  

              前面提到了分组函数,其实作用于一组记录的,那么这一组记录可由什么产生呢?不可能

       都是以整张表的形式吧。这就需要Group by子句来完成了。

      Group by

              Group by子句:

                     ●  Group by子句将一个表分成许多小组,并对每一个小组返回一个计算值。

                     ●  Group by expression:指按什么列进行分组

               注意事项:

                      ●  在select子句中,如果使用了分组函数,就不能对group by指定的列使用分组函数。

                      ●  使用where子句可以预先排除某些记录

                      ●  在Group by子句中必须有表中的列

                      ●  Group by子句不能使用别名

                      ●  可以通过Order by子句改变它的排序情况

      基本用法

                   对于其基本的用法直接以实例的形式来展示。

                   1、统计各个部门的员工的工资的总和

             select deptno ,sum(sal) from emp group by deptno;
             --升序排列
             select deptno ,sum(sal) from emp group by deptno order by deptno asc;
                   2、统计各个部门各个职业的员工的工资的总和         
             select deptno,job,sum(sal) from emp
                  group by(deptno,job) order by deptno;
                      Tips:第二个实例其实就是多列分组,先对部门进行分组,之后对职位进行分组。

                             

                   3、Having子句的使用

                          我们知道分组函数是不能卸载WHERE子句中的,但是有时候我们需要对分组进行限定

                    只有符合某个要求的分组才会被选择出来,那么就可以通过having子句来进行。具体的用法

                    同样以一个实例说明。

                &