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  表名)

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

转载于:https://www.cnblogs.com/Jims2016/p/5504521.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值