मैं एक पोस्टग्रेएसक्यूएल क्वेरी द्वारा लौटाए गए प्रत्येक रिकॉर्ड के लिए अवलोकन संख्या दिखाना चाहता हूं।PostgreSQL क्वेरी में पंक्ति संख्या कैसे दिखाएं?
मुझे लगता है कि 8.4 विंडोिंग फ़ंक्शन इस क्षमता को निष्पादित कर सकते हैं।
मैं एक पोस्टग्रेएसक्यूएल क्वेरी द्वारा लौटाए गए प्रत्येक रिकॉर्ड के लिए अवलोकन संख्या दिखाना चाहता हूं।PostgreSQL क्वेरी में पंक्ति संख्या कैसे दिखाएं?
मुझे लगता है कि 8.4 विंडोिंग फ़ंक्शन इस क्षमता को निष्पादित कर सकते हैं।
select row_number() over (order by <field> nulls last) as rownum, *
from foo_tbl
order by <field>
तो आदेश आवश्यक नहीं है, इस सवाल का जवाब भी सरल किया जा सकता है:
select row_number() over(), * -- notice: no fields are needed
from foo_tbl
ऐसा प्रतीत होता है कि यदि आप 'over()' करते हैं तो यह हमेशा उस विशेष परिणाम के क्रम में '1 2 3 4 ... '* की तरह क्रमशः रैंकर्स देता है (यदि बाहरी प्रश्न हैं जो परिणामों को पुनर्व्यवस्थित करते हैं, तो राउनम ऑर्डर रेफरी से बाहर निकलें: http://stackoverflow.com/a/4812038/32453, इसलिए उन मामलों में 'ऑर्डर बाय' जोड़ना उपयोगी हो सकता है (या यदि आप पहले उदाहरण के रूप में नल की गणना नहीं करना चाहते हैं)। FWIW। – rogerdpack
यह वास्तव में अच्छा है - हमारे लिए नए लोग, कुछ विच्छेदन कर सकते हैं कि यह कैसे काम करता है? –
@ zthomas.nc यह एक खिड़की का काम है। एक परिचित ग्लास खिड़की के बारे में सोचें। अगर आप चाहते हैं, तो आप उस खिड़की को छोटे पैन में विभाजित कर सकते हैं (फ्रेम), सभी परिणाम अभी भी विशिष्ट हैं, लेकिन फ्रेम में विभाजित हैं। यह विभाजन जिसे विभाजन के रूप में जाना जाता है, जो ऊपर '() 'ऊपर है। यदि आपने इसे कोई शर्त नहीं दी है, पूरी खिड़की के लिए एक फलक होगा। 'विंडो फ़ंक्शंस' अद्वितीय हैं कि वे गणना कर सकते हैं एक पूरे परिणाम सेट के बजाय, एक फ्रेम की पंक्तियों में एनीयन। तो अगर आप सेक्स द्वारा 'row_number' करना चाहते हैं, तो आप लिंग से विभाजन के लिए अपने ओवर का उपयोग कर सकते हैं। – vol7ron
संस्करणों के लिए पहले 8.4 करने के लिए:
SELECT count(*) rownum, foo.*
FROM datatable foo
JOIN datatable bar
ON (foo.pk_id < bar.pk_id)
GROUP BY foo.pk_id, foo.a, foo.b
ORDER BY rownum
;
-- if there isn't a single unique/primary key field, you can concatenate fields
-- Example: ON (foo.a||foo.b||foo.c < bar.a||bar.b||bar.c)
आशा इस कोई मदद करता है।
मुझे लगता है कि मुझे अपना खुद का प्रश्न पसंद करना है, इसलिए मैं भविष्य में इस पर वापस आ सकता हूं :) – vol7ron
+1 यह पहला प्रश्न है जिसे मैंने देखा है जिसमें एक व्यक्ति से प्रश्न, उत्तर और संवाद शामिल है । – Xeoncross
:) ज़ीओन, तुमने मुझे हंसी बना दिया। मैं अभी भी थोड़ी देर में इस सवाल पर वापस आ गया हूं। – vol7ron