PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

Postgres . में लगातार कॉलम के 'रन' के लिए क्वेरी करना

यहां रिकर्सिव सीटीई-समाधान है। (द्वीप और अंतराल की समस्याएं स्वाभाविक रूप से पुनरावर्ती सीटीई के लिए खुद को उधार देती हैं)

WITH RECURSIVE runrun AS (
    SELECT event_id, event_time
    , event_time - ('30 sec'::interval) AS low_time
    , event_time + ('30 sec'::interval) AS high_time
    FROM table1
    UNION
    SELECT t1.event_id, t1.event_time
    , LEAST ( rr.low_time, t1.event_time - ('30 sec'::interval) ) AS low_time
    , GREATEST ( rr.high_time, t1.event_time + ('30 sec'::interval) ) AS high_time
    FROM table1 t1
    JOIN runrun rr ON t1.event_time >= rr.low_time
                  AND t1.event_time < rr.high_time
    )
SELECT DISTINCT ON (event_id) *
FROM runrun rr
WHERE rr.event_time >= '2011-01-01 00:00:15'
AND rr.low_time <= '2011-01-01 00:00:15'
AND rr.high_time > '2011-01-01 00:00:15'
    ;

परिणाम:

 event_id |     event_time      |      low_time       |      high_time      
----------+---------------------+---------------------+---------------------
        2 | 2011-01-01 00:00:15 | 2010-12-31 23:59:45 | 2011-01-01 00:00:45
        3 | 2011-01-01 00:00:29 | 2010-12-31 23:59:45 | 2011-01-01 00:01:28
        4 | 2011-01-01 00:00:58 | 2010-12-31 23:59:30 | 2011-01-01 00:01:28
(3 rows)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. किसी फ़ंक्शन में अद्यतन या चयन कथन में गतिशील कॉलम नामों का उपयोग कैसे करें?

  2. Postgres . में लगातार कॉलम के 'रन' के लिए क्वेरी करना

  3. प्रश्नों के भीतर प्रश्न:क्या कोई बेहतर तरीका है?

  4. पोस्टग्रेज:कई-से-अनेक बनाम एकाधिक कॉलम बनाम सरणी कॉलम

  5. मैं PostgreSQL में डेटाबेस की स्कीमा कैसे निर्यात कर सकता हूं?