2013-02-01 52 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 और sa event_dt चाहता हूं। मैं यह कैसे करुं?

+2

जाना होगा क्या आप अगर वहाँ 'अधिकतम (event_dt)' के साथ कई पंक्तियों हैं क्या करना चाहते हैं? –

+1

मैं आपके पिछले संस्करण में वापस लुढ़का। कृपया एक और प्रश्न न जोड़ें, इसके लिए * नया * एक शुरू करें। यदि आपको इसकी आवश्यकता हो तो आप संपादन इतिहास में अपना टेक्स्ट पा सकते हैं। इसके अलावा: कई करीबी संबंधित प्रश्न। [यहां एक है] (http://stackoverflow.com/questions/3800551/sql-select-first-row-in-each-group-by- समूह)। –

उत्तर

19

मैं बस के लिए ...

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

धन्यवाद यह काम करता है! – Gob00st

+0

बढ़िया! बॉक्स – charybr

+1

से बाहर ** समय अंतर **? मैंने ओपी और नजजेरो के दोनों समाधानों पर डेटा की लगभग एक अरब पंक्तियों पर एक समय परीक्षण आयोजित किया। नजजेरो के समाधान को करने के लिए लगभग 25% प्रदर्शन लाभ भी है। तो न केवल यह साफ दिखता है बल्कि यह तेज़ तरीका है (शायद स्पष्ट कारणों से) – Torxed