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

PostgreSQL 7.1.3 を使っています。
時間で降順た後、グループでまとめたいのですがうまくいきません。
どのように書けばいいのでしょうか。

カラムはID、名前、時間です。

1,aaa,2006-11-1 00:00:01
1,bbb,2006-11-1 00:00:02
2,ccc,2006-11-1 00:00:03
3,ddd,2006-11-1 00:00:04
3,eee,2006-11-1 00:00:05

上記のデータを

3,eee,2006-11-1 00:00:05
2,ccc,2006-11-1 00:00:03
1,aaa,2006-11-1 00:00:02

と出力したいです。

A 回答 (2件)

「order by」して「group by」というのは、誤解していませんか?


「order by」は検索結果をソートするもので、上位n件といったものを抽出する場合を除いて、最終的な検索結果をソートします。

【ID列、時間列だけを抽出すれば良い場合】
select id,max(jikoku) as jikoku
from t1
group by id
order by id desc

【ID列、時間列に加え、氏名列も抽出する場合】
select id,shimei,jikoku
from t1
where (id,jikoku) in(
select id,max(jikoku)
from t1
group by id)
order by id desc
    • good
    • 0
この回答へのお礼

ありがとうございました、出来ました!
おっしゃるように誤解していました。
助かりました。

お礼日時:2006/11/29 13:57

 補足をお願いします。



1.想定結果を見ると、グループごとに集計を行うのではなく、単にデータを絞り込んでいるように見えるのですが、やりたいのは「集計」で合ってるんでしょうか?

2.想定結果の3行目 aaa のレコードが 02 秒のデータを持っているのはなぜでしょうか。
 そのようなデータは元データには存在しないようですが、書き間違いですか?

この回答への補足

集計といいますか、絞込みの絞込みがしたいです。
3行目間違えました、すみません。

1,bbb,2006-11-1 00:00:02

です。


order by 時間 で

3,eee,2006-11-1 00:00:05
3,ddd,2006-11-1 00:00:04
2,ccc,2006-11-1 00:00:03
1,bbb,2006-11-1 00:00:02
1,aaa,2006-11-1 00:00:01

にし、次に group by で

3,eee,2006-11-1 00:00:05
2,ccc,2006-11-1 00:00:03
1,bbb,2006-11-1 00:00:02

としたいです。

補足日時:2006/11/29 10:55
    • good
    • 0

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