按自定义周期统计数据

今天开发人员提了一个问题:如何根据自定义周期进行数据统计?
比如今天是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/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值