sql >> Database >  >> RDS >> Oracle

Oracle voortschrijdend gemiddelde

Ik begrijp niet wat het nut is van het gebruik van TO_CHAR(SDATE, 'W') ? Volgens het document zou dit je het weeknummer in de maand moeten geven...

Hoe dan ook, ik heb geprobeerd de zoekopdracht te vereenvoudigen, in de hoop dat deze nog steeds aan uw behoeften voldoet:

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:ik zie het nut er ook niet van in om TO_DATE(TO_CHAR(a.SDATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') te doen , dit komt overeen met a.SDATE ...




  1. Best practices voor zacht verwijderen (PHP/MySQL)

  2. Werkt dit om sql-injecties te stoppen?

  3. SQL Server:alle localdb-instantienamen vinden

  4. FORCE INDEX in MySQL - waar plaats ik het?