2013-02-01 10 views
7

postgresqlで最大タイムスタンプの情報を取得する必要があります。以下は、この問題のデモです:ポストグルで最大のタイムスタンプを持つ行を取得するには?

drop table Mytable cascade 
create table MyTable (usr char(1), event_dt timestamp without time zone); 
insert into mytable values ('A','01-JAN-2009 11:10:11'); 
insert into mytable values ('A','02-JAN-2009 11:10:22'); 
insert into mytable values ('B','02-JAN-2009 01:01:59'); 
insert into mytable values ('C', '31-DEC-2008 02:02:02'); 
insert into mytable values ('D', '31-DEC-2008 03:03:03'); 

は私が行う場合

select max(event_dt) from (
select usr,event_dt from mytable where usr= 'A') as foo 

それは私が必要なものの一種ですが、それが唯一のevent_dtを返し 「2009-01-02午前11時10分22秒"

ここで、私はその行のsa event_dtも欲しいです。どうすればいいのですか?

+2

行くと何が '' MAX(event_dt)を持つ複数の行がある場合は何をしたいですか? –

+1

以前のバージョンにロールバックしました。もう1つの質問を追加しないでください。*新しい*を開始してください。必要に応じて編集履歴にテキストが表示されます。また、多くの密接に関連する質問。 [ここにある](http://stackoverflow.com/questions/3800551/sql-select-first-row-in-each-group-by-group) –

答えて

19

私は単にのために...

SELECT usr, event_dt FROM mytable ORDER BY event_dt DESC LIMIT 1 
+0

ありがとう! – Gob00st

+0

素晴らしい!お買い上げ時 – charybr

+1

**タイミングの違い**?私は、OPとNajzeroのソリューションの両方で約10億行のデータのタイミングテストを実施しました。 Najzeroのソリューションを実行すると、パフォーマンスが25%向上します。それだけでなく、それはきれいに見えるが、それは速い(おそらく明白な理由のために) – Torxed

関連する問題