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

पंक्तियों के बीच अंतर को ध्यान में रखते हुए पंक्तियों को समूहीकृत करना

मैं सन्निहित श्रेणियों की पहचान करने और उन्हें समूहबद्ध करने के लिए विश्लेषण के साथ उपश्रेणियों का उपयोग करता हूं:

SQL> WITH test_data AS (
  2    SELECT  0 s, 2 dur FROM dual UNION ALL   --# ■■
  3    SELECT  2  , 2     FROM dual UNION ALL   --#   ■■
  4    SELECT 10  , 1     FROM dual UNION ALL   --#           ■
  5    SELECT 13  , 4     FROM dual UNION ALL   --#              ■■■■
  6    SELECT 15  , 4     FROM dual             --#                ■■■■
  7  )
  8  SELECT MIN(s) "begin", MAX(s + dur) "end"
  9    FROM (SELECT s, dur, SUM(gap) over(ORDER BY s) my_group
 10             FROM (SELECT s, dur,
 11                           CASE
 12                              WHEN lag(s + dur) over(ORDER BY s) >= s - 5 THEN
 13                               0
 14                              ELSE
 15                               1
 16                           END gap
 17                      FROM test_data
 18                     ORDER BY s))
 19   GROUP BY my_group;

     begin        end
---------- ----------
         0          4
        10         19


  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. Oracle RAC परिप्रेक्ष्य से SQL सर्वर क्लस्टरिंग

  3. .net में Windows सेवा tns सेवा नाम का समाधान नहीं कर सकती है

  4. My 11g ऑप्टिमाइज़र आँकड़े नौकरी मुझ पर छोड़ो - फिक्स्ड

  5. पीएल/एसक्यूएल डेवलपर के साथ रिमोट ओरेकल डीबी से कैसे जुड़ें?