SQL server中一个月每五天统计一次这五天所有数据总和除以天数最后不足五天的为一组,有知道不用存储过程怎末写吗?

一个月每五天统计一次这五天所有数据总和除以天数最后不足五天的为一组,有知道不用存储过程怎末写吗?

获取行号,除以5,取商的整数,得分组号,再按分组号group by

select g ,min(d) date_from,max(d) date_to,sum(val) sum_val from (
select round(((row_number() over (order by d))-1)/5,0,1) g,a.*  from test_table a) as t
group by g

以下是实测截图

img


如果日期存在重复,你可以先按日期做一次汇总作为子查询,然后外面再套这个开窗函数就行了,如下

select g ,min(d) date_from,max(d) date_to,sum(val) sum_val from (
select round(((row_number() over (order by d))-1)/5,0,1) g,a.*  from (select d ,sum(val) val test_table group by d) a) as t
group by g