電子書籍の厳選無料作品が豊富!

アクセステーブル
----------------------------------------------
機種 回数 アクセス日時
------ ---------- -------------------
win 1830 2009/03/16 09:10:10
win 1818 2009/03/16 09:10:13
win 1823 2009/03/16 09:10:21
win 1825 2009/03/16 09:10:24
win 1828 2009/03/16 09:11:51
win 1818 2009/03/16 09:11:53
win 1818 2009/03/16 09:11:54
win 1831 2009/03/16 09:11:55
win 1138 2009/03/16 09:11:57
win 1825 2009/03/16 09:11:58
win 1822 2009/03/16 09:12:02
win 1827 2009/03/16 09:12:04

上記のアクセスログを記録するテーブルがあり、
一分間ごとに下記の集計をしたいのです。(例 : 9:11台)
(初回は各分の最初の時間の回数、機種はすべてwin)

機種 アクセス日時 初回 最小 最大 最終
------ ------------------- ---------- ---------- ---------- ----------
win 2009/03/16 09:11 1828 1138 1831 1825
win    以下、12分台と続きます。

これを抽出するSQLはどう書けばよいのでしょうか?
よろしくお願いいたします。
DBはOracle9iです。

A 回答 (1件)

テストしてないけど、こんな感じで出るかと。



select
機種,
trunc(アクセス日時,'MI') アクセス日時,
max(case when R1=1 then 回数 end) 初回,
min(回数) 最小,
max(回数) 最大,
max(case when R2=1 then 回数 end) 最終
from
(
select
x.*,
row_number() over(partition by 機種,trunc(アクセス日時,'MI') order by アクセス日時) R1,
row_number() over(partition by 機種,trunc(アクセス日時,'MI') order by アクセス日時 desc) R2
from TBL x
)
group by 機種,trunc(アクセス日時,'MI');
    • good
    • 0
この回答へのお礼

k_o_r_o_c_h_a_n様

回答していただきありがとうございます。
これを実行で、希望のデータを取得することができました。
回答の中に理解できない部分があるので、調べたいと思います。

m(__)m

お礼日時:2009/03/20 01:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!