sql >> Databáze >  >> RDS >> Sqlserver

Klouzavý průměr / klouzavý průměr

Zde je SQL Fiddle což ukazuje následující dotaz:

WITH TempS as 
(
  SELECT s.SNo, s.value, 
  ROW_NUMBER() OVER (ORDER BY s.SNo) AS RowNumber
  FROM MyTable AS s
)
SELECT m.SNo, m.value,
(
  SELECT SUM(s.value) 
  FROM TempS AS s
  WHERE RowNumber >= m.RowNumber
  AND RowNumber <= m.RowNumber + 2
) AS Sum3InRow
FROM TempS AS m

Ve své otázce jste chtěli sečíst 3 po sobě jdoucí hodnoty. Upravili jste svou otázku s tím, že počet po sobě jdoucích záznamů, které potřebujete sečíst, se může změnit. Ve výše uvedeném dotazu stačí změnit m.RowNumber + 2 na cokoli budete potřebovat.

Pokud tedy potřebujete 60, použijte

m.RowNumber + 59

Jak vidíte, je velmi flexibilní, protože stačí změnit jedno číslo.



  1. Nesprávný soubor klíče pro tabulku '/tmp/#sql_3c51_0.MYI' zkuste jej opravit

  2. Získejte poslední den v měsíci v PostgreSQL

  3. Prozkoumání formátů data Postgres a jejich různých funkcí

  4. Oracle SQL k řazení čísel verzí