みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

複数カラムの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


ご教示のほど、よろしくお願い致します。

投稿日時 - 2013-01-14 22:24:41

QNo.7892368

Y2E

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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);

投稿日時 - 2013-01-15 01:25:41

あなたにオススメの質問