इसके दो कारण हैं कि row y
इस शर्त के कारण वापस नहीं किया गया है:
b.start > a.start
इसका मतलब है कि एक पंक्ति कभी भी अपने आप में शामिल नहीं होगी- ग्रुप BY प्रति
APP_nm
में केवल एक रिकॉर्ड लौटाएगा मान, फिर भी सभी पंक्तियों का मान समान होता है।
हालाँकि, क्वेरी में और तर्क त्रुटियाँ हैं जो सफलतापूर्वक संभाल नहीं पाएंगी। उदाहरण के लिए, यह कैसे पता चलता है कि "नया" सत्र कब शुरू होता है?
आपके द्वारा चाहा गया तर्क सामान्य PostgreSQL में DISTINCT ON
. की सहायता से प्राप्त किया जा सकता है फ़ंक्शन, जो एक विशिष्ट कॉलम में प्रति इनपुट मान एक पंक्ति दिखाता है। हालांकि, DISTINCT ON
Redshift द्वारा समर्थित नहीं है।
कुछ संभावित समाधान:DISTINCT ON लाइक फंक्शनलिटी फॉर रेडशिफ्ट
आप जो आउटपुट चाहते हैं वह प्रोग्रामिंग भाषा (जो परिणामों के माध्यम से लूप कर सकता है और चर को स्टोर कर सकता है) का उपयोग करके छोटा होगा लेकिन SQL क्वेरी पर लागू करना मुश्किल है (जिसे परिणामों की पंक्तियों पर संचालित करने के लिए डिज़ाइन किया गया है)। मैं डेटा निकालने और इसे एक साधारण स्क्रिप्ट (उदाहरण के लिए पायथन में) के माध्यम से चलाने की अनुशंसा करता हूं जो तब आपके द्वारा खोजे गए प्रारंभ और समाप्ति संयोजनों को आउटपुट कर सकता है।