यह यह करेगा:
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?