Oracle中With As 、Group By 语法

比如有下面三张表,用With as  、Group By语法解决几个问题;

  with as :  可以用来创建临时表,作为过度的表;  

 group by:   按照某个字段来分类;

 

对应字段如下:

  Sales     empNo  salDate   City    Client   sal                emp       empNo  ename             visit       empNo   visitDate   Client  visitTimes 

         

  问题一:查出每个员工每个月的总销售额

       分析:这里每个员工(即表中所有员工都要列出,哪怕没有销售额) , 每个月的总销售额(按月份进行累计) 、总销售额(SUM()函数)

       select emp.ename ,sales.saldate, sum(sales.sal) from emp left join sales

              on emp.empno=sales.empno group by emp.ename,sales.saldate;

   

 

问题二:查出每个员工每个月总的拜访次数

   分析:这里和问题一类似代码如下 

       select emp.ename ,visit.visitdate ,sum(visit.vistimes)
               from emp left join visit on emp.empno=visit.empno
              group by emp.ename,visit.visitdate;

 

 

问题三:查出每个员工每个城市的销售额

    分析:  这里就是按照员工 、初始来分组求和

问题四:列出全年销售额从大到小员工排序及其全年销售额

 问题五:列出每个员工当年的销售额和拜访次数

 分析:这里可以拆开两张表,一张总销售额表和一张总拜访次数表

     

    问题六:查出拜访次数最多的员工的全年销售额

  

  总结 :   with as 作用可以理解为临时表,为了临时用到而先得到的表,好像也可以理解为视图什么的,虽然视图现在还不是明白什么。

     With 

        临时表名(TempTable)  As (select   字段  from  表名),

        临时表名(TempTable)  As (select   字段  from  表名)

.......................................................

posted @ 2016-05-18 17:25  Blue眼泪2016  阅读(1408)  评论(0编辑  收藏  举报