• 締切済み

複数カラムのMAXを利用した抽出

以下のように、10秒ごとにユーザごとの金額データが登録されるテーブルがあるとします。 このテーブルから、ユーザごとの最新のデータを抽出するSQLを教えて頂けないでしょうか? 出来れば、WHERE条件で時間を指定する方法ではなく、MAXを使った方法がいいのですが…。 【ユーザ情報テーブル登録内容】 年 | 月 | 日 | 時 | 分 | 秒 | ユーザ| 金額 2012 | 01 | 14 | 10 | 00 | 00 | 00001 | 100 2012 | 01 | 14 | 10 | 00 | 00 | 00002 | 200 2012 | 01 | 14 | 10 | 00 | 00 | 00003 | 100 2012 | 01 | 14 | 10 | 00 | 10 | 00001 | 100 2012 | 01 | 14 | 10 | 00 | 10 | 00002 | 200 2012 | 01 | 14 | 10 | 00 | 10 | 00003 | 100 2012 | 01 | 14 | 10 | 00 | 20 | 00001 | 100 2012 | 01 | 14 | 10 | 00 | 20 | 00002 | 200 2012 | 01 | 14 | 10 | 00 | 20 | 00003 | 100 2012 | 01 | 14 | 10 | 00 | 30 | 00001 | 100 2012 | 01 | 14 | 10 | 00 | 30 | 00002 | 200 2012 | 01 | 14 | 10 | 00 | 30 | 00003 | 100 【抽出対象】 年 | 月 | 日 | 時 | 分 | 秒 | ユーザ| 金額 2012 | 01 | 14 | 10 | 00 | 30 | 00001 | 100 2012 | 01 | 14 | 10 | 00 | 30 | 00002 | 200 2012 | 01 | 14 | 10 | 00 | 30 | 00003 | 100 ご教示のほど、よろしくお願い致します。

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

単純にdatetime型のカラムで管理すればよいのでは? create table hoge( 日時 datetime ,USER varchar(5),金額 int); insert into hoge values( '2012-01-14 10:00:00','00001',100),( '2012-01-14 10:00:00','00002',200),( '2012-01-14 10:00:00','00003',100),( '2012-01-14 10:00:10','00001',100),( '2012-01-14 10:00:10','00002',200),( '2012-01-14 10:00:10','00003',100),( '2012-01-14 10:00:20','00001',100),( '2012-01-14 10:00:20','00002',200),( '2012-01-14 10:00:20','00003',100),( '2012-01-14 10:00:30','00001',100),( '2012-01-14 10:00:30','00002',200),( '2012-01-14 10:00:30','00003',100); select 日時,USER ,金額 from hoge where (日時,USER) in (select MAX(日時),USER from hoge group by USER);

関連するQ&A