问题:对小于<=当天的数据求平均值,例如:如果是日指标,现在是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 --求小于等于当天的平均数