Oracle中With As 、Group By 语法

时间:2021-11-12 13:05:11

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

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

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

对应字段如下:

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

Oracle中With As 、Group By 语法     Oracle中With As 、Group By 语法    Oracle中With As 、Group By 语法

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

分析:这里每个员工(即表中所有员工都要列出,哪怕没有销售额) , 每个月的总销售额(按月份进行累计) 、总销售额(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;

   Oracle中With As 、Group By 语法

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

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

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

Oracle中With As 、Group By 语法

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

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

Oracle中With As 、Group By 语法

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

Oracle中With As 、Group By 语法

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

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

Oracle中With As 、Group By 语法

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

Oracle中With As 、Group By 语法

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

With

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

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

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

相关文章