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

Oracle подвижна средна

Не разбирам какъв е смисълът да използвам TO_CHAR(SDATE, 'W') ? Според документа това трябва да ви даде номера на седмицата в месеца...

Както и да е, опитах се да опростя заявката, надявайки се, че все още отговаря на вашите нужди:

SELECT x.*, ABS (LTMA-STMA) DIFFERENCE
FROM
(
  SELECT SDATE, PAYLOAD,
         AVG(PAYLOAD) OVER (ORDER BY SDATE rows BETWEEN 14 PRECEDING AND CURRENT ROW) STMA,
         AVG(PAYLOAD) OVER (ORDER BY SDATE rows BETWEEN 90 PRECEDING AND CURRENT ROW) LTMA
  FROM
  (
    SELECT a.SDATE, SUM(a.PAYLOAD) PAYLOAD
    FROM TABLE_PAYLOAD a
    WHERE a.SDATE  > sysdate - 3 * 365      
    GROUP BY a.SDATE
  )
) x
ORDER BY SDATE;

PS:Аз също не виждам смисъл да правя TO_DATE(TO_CHAR(a.SDATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') , това е еквивалентно на a.SDATE ...




  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

  2. Разберете към кое тримесечие принадлежи датата в Oracle

  3. Как да инсталирам пакета ROracle на Windows 7?

  4. SQL:изтрийте всички данни от всички налични таблици

  5. Как да ускорите зареждането на данни от oracle sql в pandas df