欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

一个 SQL 解决方案可实现历史应计项目、每月应计项目和每日细分项目

最编程 2024-05-02 10:16:42
...

最近刚好接到了这样一个需求,就是标题所示的要在报表中展示截止到业务日期时的历史累计值、当月累计值和当日值。

数据首先是处理到这样的模型中:业务日期(biz_date)、当日增量统计值(cnt)

SQL如下:

select biz_date,--业务日期
       cnt,--当日统计值
	   sum(cnt) over(order by biz_date asc) as cnt_all,--历史累计统计值
	   sum(cnt) over(partition by substr(biz_date,1,7) order by biz_date asc) as cnt_m--当月统计值
from tab
where pt='${bizdate}';

  本人回想起刚工作时的做法是用不同维度的group by值去关联得到的这个结果,现在看起来可以有一种简单且方便理解记忆的写法,就记录一下。

这里其实是开窗函数的灵活使用,很多复杂的数据处理都可以先考虑一下开窗可不可以做,再去确定对需求的技术方案。