DB2中with递归的妙用

问题:对小于<=当天的数据求平均值,例如:如果是日指标,现在是5月3日,则当日的日均通信客户数=(5月1日通信客户数+5月2日通信客户数+5月3日通信客户数)/ 3

解答:

首先用with 定义一个临时的数据集合,t1中存放是的对每一天的通信客户数之和,t2中存放小于等于当天的通信客户数之和

with t1(op_time,num,id) as (
select op_time,sum(curday_used_cust_qty),row_number()over(order by op_time)
from tmp_day_kpi
where op_time >= '2013-05-01'
group by op_time), -- 求每一天的和

t2(op_time,num,id) as(
select op_time,num,id from t1 where id= 1 union all
select t1.op_time,t1.num+t2.num,t1.id from t1,t2
where t1.id=t2.id+1) --求小于等于当天日期的和

select op_time,num,id,num/id from t2  --求小于等于当天的平均数

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值