• ベストアンサー

絞込みについて

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 と出力したいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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

cefirosp
質問者

お礼

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

その他の回答 (1)

noname#25358
noname#25358
回答No.1

 補足をお願いします。 1.想定結果を見ると、グループごとに集計を行うのではなく、単にデータを絞り込んでいるように見えるのですが、やりたいのは「集計」で合ってるんでしょうか? 2.想定結果の3行目 aaa のレコードが 02 秒のデータを持っているのはなぜでしょうか。  そのようなデータは元データには存在しないようですが、書き間違いですか?

cefirosp
質問者

補足

集計といいますか、絞込みの絞込みがしたいです。 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 としたいです。

関連するQ&A