Oracle
 sql >> база данни >  >> RDS >> Oracle

Изчисляване на празници:брой съботи и недели в дадения период от време заявка в Oracle

Можете да използвате ГЕНЕРАТОРА НА РЕДОВЕ техника, за да генерирате първо датите за даден диапазон и след това да броите само СЪБОТА и НЕДЕЛЯ .

Например тази заявка ще ми даде общия брой на съботите и неделите между 1 януари 2014 г. и 31 декември 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. 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) Обединете всички типове данни в една колона

  2. Обръщане на данни с помощта на две колони

  3. Най-бързият начин за актуализиране на огромен брой редове с входен параметър List<T> в MyBatis към Oracle db

  4. Oracle SQL:Избор на данни и име на дял от таблица и съкращаване на дялове

  5. Защо функцията pi() не работи в Oracle, използвайки своя JDBC драйвер?