पोस्टग्रेएसक्यूएल 9.4 विंडो फ़ंक्शंस में FILTER
का नया विकल्प प्रसंस्करण के लिए विंडो फ्रेम का उप-सेट चुनने के लिए नया विकल्प है। दस्तावेज इसका उल्लेख करता है, लेकिन कोई नमूना प्रदान नहीं करता है। एक ऑनलाइन खोज 2ndQuadrant सहित कुछ नमूने उत्पन्न करती है, लेकिन जो कुछ मैंने पाया वह लगातार अभिव्यक्तियों के साथ मामूली उदाहरण थे। जो मैं खोज रहा हूं वह एक फ़िल्टर अभिव्यक्ति है जिसमें वर्तमान पंक्ति का मूल्य शामिल है।विंडो फ़ंक्शन के फ़िल्टर खंड में वर्तमान पंक्ति का संदर्भ
मान लें मैं कॉलम का एक समूह, जिनमें से एक date
प्रकार की है के साथ एक मेज है:
col1 | col2 | dt ------------------------ 1 | a | 2015-07-01 2 | b | 2015-07-03 3 | c | 2015-07-10 4 | d | 2015-07-11 5 | e | 2015-07-11 6 | f | 2015-07-13 ...
एक विंडो पूरे मेज पर date
पर प्रसंस्करण के लिए परिभाषा तुच्छता का निर्माण किया है: WINDOW win AS (ORDER BY dt)
मुझे यह जानने में दिलचस्पी है कि वर्तमान पंक्ति (समावेशी) से 4 दिन पहले, कितनी पंक्तियां मौजूद हैं।
count(*) FILTER (WHERE current_row.dt - dt <= 4) OVER win
लेकिन मैं कैसे निर्दिष्ट करूँ current_row.dt
(एक बेहतर वाक्य रचना की कमी के लिए):
col1 | col2 | dt | count -------------------------------- 1 | a | 2015-07-01 | 1 2 | b | 2015-07-03 | 2 3 | c | 2015-07-10 | 1 4 | d | 2015-07-11 | 3 5 | e | 2015-07-11 | 3 6 | f | 2015-07-13 | 4 ...
खिड़की कार्यों का FILTER
खंड स्वाभाविक पसंद की तरह लगता है: तो मैं इस उत्पादन उत्पन्न करने के लिए करना चाहते हैं? क्या यह भी संभव है?
यदि यह संभव नहीं है, तो क्या विंडो फ्रेम में date
श्रेणियां चुनने के अन्य तरीके हैं? फ्रेम विनिर्देशन कोई मदद नहीं है क्योंकि यह सभी पंक्ति-आधारित है।
मुझे उप-प्रश्नों का उपयोग करके वैकल्पिक समाधान में रूचि नहीं है, इसे विंडो प्रसंस्करण पर आधारित होना चाहिए।
दिलचस्प समस्या। नियमित रूप से पोस्टग्रेस के रूप में आपको एक टेबल परिभाषा (या बेहतर अभी तक, एक पूर्ण 'तालिका बनाएं' स्क्रिप्ट) –
@ErwinBrandstetter प्रदान करना चाहिए, यह ऐसा कुछ है जो "फीचर अनुरोध" के रूप में फ़्लैगिंग की योग्यता प्राप्त करेगा? मेरे लिए यह वर्तमान पंक्ति में मौजूद कुछ स्थितियों के आधार पर विंडो फ्रेम को फ़िल्टर करने में सक्षम होने के लिए काफी मूल्यवान प्रतीत होता है। – Patrick
हां, यह विभिन्न समस्याओं के लिए उपयोगी होगा, मैंने SO पर कई संबंधित प्रश्न देखे हैं। मुझे डर है कि कार्यान्वयन में प्रमुख बदलावों के कारण इस सुविधा को बहुत सारे काम की आवश्यकता होगी, लेकिन यह सुविधा में सार्वजनिक रुचि के दस्तावेज को चोट नहीं पहुंचाएगा। गायब 'रेंज के बीच ... सीमा निर्धारण/अनुसरण करने वाली सुविधा' से संबंधित लगता है जो पहले से ही [टूडो विकी में प्रलेखित है] (https://wiki.postgresql.org/wiki/Todo#Window_Functions) –