द्वारा मैं इस तरह एक मेज है,अंतराल समारोह और ग्रुप
event_id | date
----------+------------------------
1703702 | 2013-06-25 07:50:57-04
3197588 | 2013-06-25 07:51:57-04
60894420 | 2013-06-25 07:52:57-04
60894420 | 2013-06-25 07:53:57-04
183503 | 2013-06-25 07:54:57-04
63116743 | 2013-06-25 07:55:57-04
63110451 | 2013-06-25 07:56:57-04
63116743 | 2013-06-25 07:57:57-04
63116743 | 2013-06-25 07:58:57-04
मैं तो मैं किसी विशेष event_id के बीच समय अंतराल पा सकते हैं द्वारा अंतराल समारोह लेकिन यह भी एक समूह लागू करना चाहते हैं।
SELECT event_id, difference
FROM (
SELECT event_id, date - lag(date) over (order by date) as
difference FROM table GROUP BY event_id
) t;
मैं तथापि अंतराल समारोह के साथ ग्रुप द्वारा उपयोग नहीं कर सकते:
मैं कुछ इस तरह करना चाहते हैं। मैं एक परिणाम निम्न के समान करना चाहते हैं:
63116743, {120, 60}
60894420, {60}
...
...
तो वहाँ पहले आईडी के लिए घटनाओं के बीच एक 120S और 60 के दशकों खिड़की, और दूसरा आईडी के लिए एक 60 के दशक खिड़की थी।
क्या ऐसा करने का कोई तरीका है? आउटपुट प्रारूप तब तक बहुत महत्वपूर्ण नहीं है जब तक कि मैं इसे अंत में एक सरणी में प्राप्त कर सकूं। मैं पोस्टग्रेज़ का उपयोग कर रहा हूं 9.1
क्षमा करें, लेकिन मुझे समझ में नहीं आता कि आउटपुट का क्या अर्थ है। 120? 60? किस? यह आपके द्वारा दिखाए गए डेटा से नहीं दिखता है। –
आपके प्रश्न में उप-चयन क्वेरी में कुछ भी नहीं जोड़ रहा है - आप प्रभावी रूप से 'चयन *' कर रहे हैं, जो आंतरिक क्वेरी को चलाने के समान है। – IMSoP
@depesz \t यह सेकेंड में व्यक्त अंतराल है: '2013-06-25 07: 55: 57-04' और '2013-06-25 07: 57: 57-04' के बीच 120s, उसके बाद 60 और उसके बीच 60 ' -06-25 07: 58: 57-04 ', केवल एक ही आईडी के साथ घटनाओं की तुलना। – IMSoP