sql >> Database teknologi >  >> RDS >> Oracle

Beregning af helligdage:antal lørdage og søndage inden for det givne datointerval forespørgsel i Oracle

Du kan bruge RÆKJEGENERATOR teknik til først at generere datoerne for et givet interval og derefter kun tælle lørdage og søndage .

For eksempel vil denne forespørgsel give mig det samlede antal lørdage og søndage mellem 1. januar 2014 og 31. december 2014 -

SQL> WITH DATA AS
  2    (SELECT to_date('01/01/2014', 'DD/MM/YYYY') date1,
  3      to_date('31/12/2014', 'DD/MM/YYYY') date2
  4    FROM dual
  5    )
  6  SELECT SUM(holiday) holiday_count
  7  FROM
  8    (SELECT
  9      CASE
 10        WHEN TO_CHAR(date1+LEVEL-1, 'DY','NLS_DATE_LANGUAGE=AMERICAN') IN ('SAT', 'SUN')
 11        THEN 1
 12        ELSE 0
 13      END holiday
 14    FROM data
 15      CONNECT BY LEVEL <= date2-date1+1
 16    )
 17  /

HOLIDAY_COUNT
-------------
          104

SQL>



  1. Læs og importer CSV-filer i Oracle PL/SQL effektivt

  2. Nogle ENHVER Aggregerede Transformationer er ødelagte

  3. Hvorfor er logiske læsninger for aggregerede vinduesfunktioner så høje?

  4. Hvorfor kommer resultater fra en SQL-forespørgsel ikke tilbage i den rækkefølge, jeg forventer?