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

दो खंडों के बीच दिनों की गणना करें

गणना करने का एक तरीका यहां दिया गया है - कैलेंडर तालिका का उपयोग किए बिना। एकमात्र इनपुट डेटा वह है जो आपकी पहली तालिका (आईडी और HIRE_DATE) से आता है, जिसे मैंने खंड के साथ शामिल किया है (आपके प्रश्न का उत्तर देने वाली क्वेरी का हिस्सा नहीं!)। बाकी सब की गणना की जाती है। मैं दिखाता हूं कि किराये की तारीख सहित दिनों की संख्या की गणना कैसे करें; अगर आपको इसकी आवश्यकता नहीं है, तो अंत में 1 घटाएं।

TRUNC(<date>, 'iw') <date> . के सप्ताह का सोमवार है . क्वेरी गणना करती है कि ईओएम सप्ताह में सोमवार और ईओएम के बीच कितने दिन हैं, लेकिन 5 से अधिक नहीं (यदि ईओएम शनिवार या रविवार हो सकता है)। यह HIRE_DATE के लिए समान गणना करता है, लेकिन यह सोमवार से HIRE_DATE तक छोड़कर के दिनों की गणना करता है चुनने की तारीख। अंतिम भाग HIRE_DATE के सोमवार और EOM के सोमवार के बीच प्रत्येक पूरे सप्ताह के लिए 5 दिन जोड़ रहा है।

with
  sample_data(id, hire_date) as (
    select 1, to_date('09/26/2018', 'mm/dd/yyyy') from dual union all
    select 2, to_date('07/10/2018', 'mm/dd/yyyy') from dual
  )
select id, to_char(hire_date, 'Dy mm/dd/yyyy')                      as hire_date,
       to_char(eom, 'Dy mm/dd/yyyy')                                as eom,
       least(5, eom - eom_mon + 1) - least(5, hire_date - hire_mon)
       + (eom_mon - hire_mon) * 5 / 7                               as workdays
from   (
         select id, hire_date, last_day(hire_date) as eom,
                trunc(hire_date, 'iw')             as hire_mon,
                trunc(last_day(hire_date), 'iw')   as eom_mon
         from   sample_data
       )
;

        ID HIRE_DATE               EOM                       WORKDAYS
---------- ----------------------- ----------------------- ----------
         1 Wed 09/26/2018          Sun 09/30/2018                   3
         2 Tue 07/10/2018          Tue 07/31/2018                  16


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CONNECT BY . का उपयोग करके पदानुक्रमित क्वेरी के प्रत्येक स्तर पर गणना/योग प्राप्त करना

  2. परिभाषा पैरामीटर के रूप में Oracle varchar2 का अनिवार्य आकार क्यों है?

  3. एक ही तालिका में दो अन्य कॉलम के संयोजन वाले कॉलम को कैसे अपडेट करें

  4. घंटे और मिनट में परिणाम प्राप्त करने के लिए ऑरैकल में 2 तिथियां कैसे घटाएं?

  5. ऑरैकल क्वेरी सभी कॉलमों को ',' से जोड़ दें