今天开发人员提了一个问题:如何根据自定义周期进行数据统计?
比如今天是2007/08/06,按7天作为一个统计周期,则统计时间周期分别是:2007/08/06 - 2007/08/12,2007/08/13-2007/08/19……
统计的时间段是不确定的。

这个问题归根到底是根据统计周期的长度把统计时间段划分为若干部分,这里提供一种方法,抛砖引玉,希望有更多的好方法。


首先构造数据:
SQL> create table tdate as select sysdate+rownum a from dual connect by rownum<30;

Table created

根据统计周期长度划分时间段:

SQL> var start_date date

SQL> exec :start_date:=trunc(sysdate)+4

SQL>
SQL> SELECT TRUNC(A), FLOOR(ABS(:START_DATE - TRUNC(A)) / 7)
2 FROM TDATE
3 WHERE A >= :START_DATE
4 ;

TRUNC(A) FLOOR(ABS(:START_DATE-TRUNC(A)
----------- ------------------------------
2007-8-10 0
2007-8-11 0
2007-8-12 0
2007-8-13 0
2007-8-14 0
2007-8-15 0
2007-8-16 0
2007-8-17 1
2007-8-18 1
2007-8-19 1
2007-8-20 1
2007-8-21 1
2007-8-22 1
2007-8-23 1
2007-8-24 2
2007-8-25 2
2007-8-26 2
2007-8-27 2
2007-8-28 2
2007-8-29 2
2007-8-30 2
2007-8-31 3
2007-9-1 3
2007-9-2 3
2007-9-3 3
2007-9-4 3


实际统计的时候根据第二列做group by操作即可。
把7换成其它数字可以实现按任意的统计周期长度统计。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/231499/viewspace-63843/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/231499/viewspace-63843/

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐