sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man beräknar det glidande medelvärdet under de senaste n timmarna

Tja, det faktum att du måste beräkna genomsnittet för varje timme, gör faktiskt detta enklare, eftersom du bara behöver SUM produkträkningen och dividera den med ett fast tal (24). Så jag tror att detta kommer att få de resultat du vill ha (även om en markör i det här fallet faktiskt är snabbare):

SELECT A.*, B.ProductCount/24 DailyMovingAverage
FROM ProductInventory A
OUTER APPLY (   SELECT SUM(ProductCount) ProductCount
                FROM ProductInventory
                WHERE ProductName = A.ProductName 
                AND [Date] BETWEEN DATEADD(HOUR,-23,A.[Date]) AND A.[Date]) B


  1. Interaktion mellan SELECT FOR UPDATE-låset med markören och batch-DML

  2. fylla automatiskt i tabellen med dummydata i mysql

  3. Hur rensar jag SqlDependency från SQL Server-minnet?

  4. Magento Mass Importera bilder med MAGMI - bilder exkluderade