Oracle select --分析函数over()


 --分析函数over()
--开窗函数
--开窗函数的的理解:
/*
开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例如下:
over(order by salary) 按照salary排序进行累计,order by是个默认的开窗函数
over(partition by deptno)按照部门分区
over(order by salary range between 50 preceding and 150 following)
每行对应的数据窗口是之前行幅度值不超过50,之后行幅度值不超过150
over(order by salary rows between 50 preceding and 150 following)
每行对应的数据窗口是之前50行,之后150行
over(order by salary rows between unbounded preceding and unbounded following)
每行对应的数据窗口是从第一行到最后一行,等效:
over(order by salary range between unbounded preceding and unbounded following)
*/

--创建表test
create table test(sales_id varchar2(2),sales varchar2(10),dest varchar2(10),dept varchar2(10),revenue number);

--创建数据
insert into test values('11','smith','hangzhou','市场',1000);
insert into test values('12','smith','wenzhou','市场',2000);
insert into test values('13','allen','wenzhou','渠道',3000);
insert into test values('14','allen','wenzhou','渠道',4000);
insert into test values('15','jekch','shanghai','渠道',2500);
--计算数据窗口表达式的销售总额
select sales_id,sales,dest,dept,revenue,sum(revenue) over(order by sales_id) as 总销售额       
from test

select sales_id,sales,dest,dept,revenue,sum(revenue) over(order by sales) as 总销售额       
from test

--计算数据窗口表达式累计销售额
select sales_id,sales,dest,dept,revenue,sum(revenue) over(partition by sales) as 累计销售额       
from test

select sales_id,sales,dest,dept,revenue,sum(revenue) over(partition by sales) as 累计销售额      
from test
order by sales_id
--计算数据窗口表达式的统计值,cnt1统计所有行数,cnt2统计表达式坐在的最大行数,cnt3统计表达式出现的次数
select sales_id,sales,dest,count(*) over() as cnt1,
       count(*) over(order by dest) as cnt2,
       count(*) over(partition by dest) as cnt3
from test

--删除表
drop table test

---平台函数
isNull(obj):判断给定对象是否为null,返回true/false;如isNull(repField("org_code"))
switch(condition,case,value,case,value……)
condition:switch语句的条件
case:case值
value:上一个case对应的值
如:switch(repField("org_code"),90,"社保科",91,"行政政法科",92,"企业科",93,"农业科",94,"经济建设科",95,"教科文科")

 

本文来自CSDN博客,转载出处:http://blog.csdn.net/adwfcu/archive/2008/11/19/3336481.aspx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值