यह यह करेगा:
SELECT done, count(*) FILTER (WHERE step) OVER (ORDER BY done) AS grp
FROM (
SELECT done
, (lag(done) OVER (ORDER BY done) <= done - interval '2 min') AS step
FROM tbl
) sub
ORDER BY done;
सबक्वेरी sub रिकॉर्ड step true . के रूप में यदि पिछली पंक्ति कम से कम 2 मिनट की दूरी पर है - टाइमस्टैम्प कॉलम द्वारा क्रमबद्ध done इस मामले में ही।
बाहरी क्वेरी चरणों की एक रोलिंग गिनती जोड़ती है, प्रभावी रूप से समूह संख्या (grp .) ) - कुल मिलाकर FILTER किसी अन्य विंडो फ़ंक्शन के साथ क्लॉज।
db<>यहां बेला करें
संबंधित:
- एक निश्चित अंतराल से अधिक सभी टाइमस्टैम्प को अलग खोजने की क्वेरी
- पोस्टग्रेस्क्ल में समूहों को कैसे लेबल करें जब संबंधित समूह पिछली पंक्ति पर निर्भर करता है?
- सबसे लंबे निरंतर अनुक्रम का चयन करें
- ग्रुपिंग या विंडो
कुल के बारे में FILTER खंड:
- मैं इस गेम सांख्यिकी क्वेरी को कैसे सरल बना सकता हूं?
- सशर्त लीड/लैग फ़ंक्शन PostgreSQL?