2013-02-01 3 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초 "

여기서 usr도 같은 행의 event_dt를 원합니다. 어떻게해야합니까?

+2

갈 것입니다 당신이'은'최대 (event_dt)을 가진 행이 여러 개있을 경우 어떻게 하시겠습니까? –

+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

관련 문제