2013-02-01 15 views
7

Postgresql'de maksimum zaman damgası ile bir bilgi satırı almam gerekiyor. Aşağıda bu soru için bir demo:Satırlarda maksimum zaman damgası ile satır nasıl alınır?

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'); 

ben yaparsanız

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

İhtiyacım ne tür ama sadece event_dt döndürür "2009-01-02 11:10:22 "

Bu satırdaki usr'ın yanı sıra event_dt'yi nerede kullanmak istiyorum. Nasıl yaparım?

+2

gider Ne '' max (event_dt) ile çeşitli satır varsa yapmak istiyorsunuz? –

+1

Önceki sürümüne geri döndüm. Lütfen başka bir soru eklemeyin, bunun için * yeni * bir tane başlatın. İhtiyacınız varsa, metninizi düzenleme geçmişinde bulabilirsiniz. Ayrıca: çok yakından ilgili sorular. [İşte bir tane] (http://stackoverflow.com/questions/3800551/sql-select-first-row-in-each-group-by-group). –

cevap

19

Sadece için ...

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

teşekkürler bu çalışıyor! – Gob00st

+0

harika! Kutudan çıktı – charybr

+1

** Zamanlama farkı **? OP ve Najzero çözümlerinin her ikisinde de yaklaşık bir milyar satırlık veri üzerinde bir zamanlama testi yaptım. Najzero'nun çözümünü yapmak için% 25'lik bir performans artışı var. Yani sadece temiz değil, aynı zamanda daha hızlıdır (belki de belli sebeplerden dolayı) – Torxed