oracleは、一定期間の連続時間間隔のレコードセットをクエリーします.
1585 ワード
実際の作業では、時間ごとにデータを統計する場合がありますが、データベース内のデータは必ずしも連続しているとは限りません.時間ごとにグループ化すると、タイム・アーカイブが形成され、表示された結果が連続した時間記録を形成できるように、
通常の方法は、データベース内のクエリー結果に接続する前に、一定時間間隔のレコードセットを形成することです.
次のSQL文は、一定期間の連続時間間隔でクエリされます.
結果は次のとおりです.
通常の方法は、データベース内のクエリー結果に接続する前に、一定時間間隔のレコードセットを形成することです.
次のSQL文は、一定期間の連続時間間隔でクエリされます.
SELECT to_date('2013-10-01', 'yyyy-mm-dd') +
numtodsinterval(rownum - 1, 'hour')
FROM DUAL
CONNECT BY ROWNUM <= ((to_date('2013-10-02', 'yyyy-mm-dd') -
to_date('2013-10-01', 'yyyy-mm-dd') + 1) * 24)
結果は次のとおりです.
1 2013/10/1
2 2013/10/1 1:00:00
3 2013/10/1 2:00:00
4 2013/10/1 3:00:00
5 2013/10/1 4:00:00
6 2013/10/1 5:00:00
7 2013/10/1 6:00:00
8 2013/10/1 7:00:00
9 2013/10/1 8:00:00
10 2013/10/1 9:00:00
11 2013/10/1 10:00:00
12 2013/10/1 11:00:00
13 2013/10/1 12:00:00
14 2013/10/1 13:00:00
15 2013/10/1 14:00:00
16 2013/10/1 15:00:00
17 2013/10/1 16:00:00
18 2013/10/1 17:00:00
19 2013/10/1 18:00:00
20 2013/10/1 19:00:00
21 2013/10/1 20:00:00
22 2013/10/1 21:00:00
23 2013/10/1 22:00:00
24 2013/10/1 23:00:00
25 2013/10/2
26 2013/10/2 1:00:00
27 2013/10/2 2:00:00
28 2013/10/2 3:00:00
29 2013/10/2 4:00:00
30 2013/10/2 5:00:00
31 2013/10/2 6:00:00
32 2013/10/2 7:00:00
33 2013/10/2 8:00:00
34 2013/10/2 9:00:00
35 2013/10/2 10:00:00
36 2013/10/2 11:00:00
37 2013/10/2 12:00:00
38 2013/10/2 13:00:00
39 2013/10/2 14:00:00
40 2013/10/2 15:00:00
41 2013/10/2 16:00:00
42 2013/10/2 17:00:00
43 2013/10/2 18:00:00
44 2013/10/2 19:00:00
45 2013/10/2 20:00:00
46 2013/10/2 21:00:00
47 2013/10/2 22:00:00
48 2013/10/2 23:00:00