1970 年 1 月 1 日からのミリ秒数としてイベントの作成時間を列に格納する 2 つの列(一意の主キー) とを含むevents
テーブルがあります。eventkey
createtime
NUMBER
先週の各時間に作成されたイベントの数を示す「ヒストグラム」または度数分布を作成したいと考えています。
width_bucket()
これは、関数を使用して Oracle でそのようなクエリを作成する最良の方法ですか? width_bucket
各行が属するバケット番号を特定してそれ以上を行うのではなく、他の Oracle 分析関数のいずれかを使用して、各バケットに分類される行数を導き出すことは可能count(*)
ですか?
-- 1305504000000 = 5/16/2011 12:00am GMT
-- 1306108800000 = 5/23/2011 12:00am GMT
select
timestamp '1970-01-01 00:00:00' + numtodsinterval((1305504000000/1000 + (bucket * 60 * 60)), 'second') period_start,
numevents
from (
select bucket, count(*) as events from (
select eventkey, createtime,
width_bucket(createtime, 1305504000000, 1306108800000, 24 * 7) bucket
from events
where createtime between 1305504000000 and 1306108800000
) group by bucket
)
order by period_start