アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のように、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


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

A 回答 (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);
    • good
    • 0

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