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

मैं अपने डेटा सेट में तारीखों के सन्निहित सेट के लिए कुशलतापूर्वक क्वेरी कैसे कर सकता हूं?

इस तरह की क्वेरी कैसे करें इसका एक उदाहरण यहां दिया गया है:

SQL> create table t (site_id,start_date,end_date)
  2  as
  3  select 1, date '2008-10-01', date '2008-10-02' from dual union all
  4  select 1, date '2008-10-02', date '2008-10-03' from dual union all
  5  select 1, date '2008-10-03', date '2008-10-30' from dual union all
  6  select 1, date '2008-10-30', date '2008-10-31' from dual union all
  7  select 2, date '2008-10-01', date '2008-10-02' from dual union all
  8  select 2, date '2008-10-02', date '2008-10-03' from dual union all
  9  select 2, date '2008-10-03', date '2008-10-04' from dual union all
 10  select 2, date '2008-10-04', date '2008-10-05' from dual union all
 11  select 2, date '2008-10-05', date '2008-10-06' from dual union all
 12  select 2, date '2008-10-06', date '2008-10-07' from dual union all
 13  select 2, date '2008-10-07', date '2008-10-08' from dual union all
 14  select 2, date '2008-10-08', date '2008-10-09' from dual union all
 15  select 2, date '2008-10-09', date '2008-10-10' from dual union all
 16  select 2, date '2008-10-10', date '2008-10-11' from dual union all
 17  select 2, date '2008-10-11', date '2008-10-12' from dual union all
 18  select 2, date '2008-10-12', date '2008-10-13' from dual union all
 19  select 2, date '2008-10-13', date '2008-10-14' from dual union all
 20  select 2, date '2008-10-14', date '2008-10-15' from dual union all
 21  select 2, date '2008-10-15', date '2008-10-16' from dual union all
 22  select 2, date '2008-10-16', date '2008-10-17' from dual union all
 23  select 2, date '2008-10-17', date '2008-10-18' from dual union all
 24  select 2, date '2008-10-18', date '2008-10-19' from dual union all
 25  select 2, date '2008-10-19', date '2008-10-20' from dual union all
 26  select 3, date '2008-10-01', date '2008-10-02' from dual union all
 27  select 3, date '2008-10-02', date '2008-10-03' from dual union all
 28  select 3, date '2008-10-03', date '2008-10-04' from dual union all
 29  select 3, date '2008-10-04', date '2008-10-05' from dual union all
 30  select 3, date '2008-10-05', date '2008-10-06' from dual union all
 31  select 3, date '2008-10-06', date '2008-10-07' from dual union all
 32  select 3, date '2008-10-07', date '2008-10-08' from dual union all
 33  select 3, date '2008-10-08', date '2008-10-09' from dual union all
 34  select 3, date '2008-10-09', date '2008-10-10' from dual union all
 35  select 3, date '2008-10-30', date '2008-10-31' from dual
 36  /

Tabel is aangemaakt.

और फिर क्वेरी:

SQL> select site_id
  2       , min(start_date) contiguous_start_date
  3       , max(end_date) contiguous_end_date
  4       , count(*) number_of_contiguous_records
  5    from ( select site_id
  6                , start_date
  7                , end_date
  8                , max(rn) over (partition by site_id order by start_date) maxrn
  9             from ( select site_id
 10                         , start_date
 11                         , end_date
 12                         , case lag(end_date) over (partition by site_id order by start_date)
 13                             when start_date then null
 14                             else rownum
 15                           end rn
 16                      from t
 17                  )
 18          )
 19   group by site_id
 20       , maxrn
 21   order by site_id
 22       , contiguous_start_date
 23  /

और परिणाम:

   SITE_ID CONTIGUOUS_START_DA CONTIGUOUS_END_DATE NUMBER_OF_CONTIGUOUS_RECORDS
---------- ------------------- ------------------- ----------------------------
         1 01-10-2008 00:00:00 31-10-2008 00:00:00                            4
         2 01-10-2008 00:00:00 20-10-2008 00:00:00                           19
         3 01-10-2008 00:00:00 10-10-2008 00:00:00                            9
         3 30-10-2008 00:00:00 31-10-2008 00:00:00                            1

4 rijen zijn geselecteerd.

सादर, रोब।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL त्रुटि:अनुक्रमणिका में गुम या बाहर पैरामीटर ::1

  2. ई-बिजनेस सूट में प्रमुख प्रौद्योगिकी परिवर्तन 12.2

  3. Oracle - मुझे स्टैंडअलोन प्रक्रियाओं या कार्यों के बजाय संकुल का उपयोग क्यों करना चाहिए

  4. वीडियो:आरएसी पर Oracle 12c पहचान कॉलम प्रदर्शन

  5. Tns . का उपयोग करके Oracle से कनेक्ट नहीं हो सकता