一步一脚印

欢迎来到一步一脚印>>   | 首页 资源中心 | BUG | 心情驿站 | Linux/Unix技术 | Oracle技术 | ITPUB论坛

按自定义周期统计数据

发表人:space6212 | 发表时间: 2007年八月06日, 16:52

今天开发人员提了一个问题:如何根据自定义周期进行数据统计?
比如今天是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换成其它数字可以实现按任意的统计周期长度统计。

发表评论

标题

在此添加评论

称呼

邮箱地址(可选)

个人主页(可选)




Valid XHTML 1.0 Strict and CSS. Powered by pLog
Design by Blog.lvwo.com