sql >> Databasteknik >  >> RDS >> Oracle

Oracle glidande medelvärde

Jag förstår inte vad det är meningen med att använda TO_CHAR(SDATE, 'W') ? Enligt doktorn ska detta ge dig veckonummer i månaden...

Hur som helst försökte jag förenkla frågan och hoppas att den fortfarande passar dina behov:

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:Jag ser inte heller poängen med att göra TO_DATE(TO_CHAR(a.SDATE, 'YYYY-MM-DD'), 'YYYY-MM-DD') , detta motsvarar a.SDATE ...




  1. postgresql:INSERT INTO ... (VÄLJ * ...)

  2. Vilken hierarkisk modell ska jag använda? Närliggande, kapslad eller uppräknad?

  3. Hur kan jag skriva om den här frågan för att undvika felet:Du kan inte ange måltabell för uppdatering i FROM-satsen

  4. Count(*) returnerar null