按自定義週期統計資料

space6212發表於2019-01-26

今天開發人員提了一個問題:如何根據自定義週期進行資料統計?
比如今天是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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章