• 締切済み

SQL 一定期間ごとの集計

アクセステーブル ---------------------------------------------- 機種 回数 アクセス日時 ------ ---------- ------------------- 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です。

みんなの回答

回答No.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');

undergrou
質問者

お礼

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

関連するQ&A