sql >> Database >  >> RDS >> Sqlserver

Voortschrijdend gemiddelde / voortschrijdend gemiddelde

Hier is de SQL Fiddle die de volgende vraag laat zien:

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

In uw vraag vroeg u om 3 opeenvolgende waarden op te tellen. U heeft uw vraag gewijzigd omdat u zegt dat het aantal opeenvolgende records dat u moet optellen, kan veranderen. In de bovenstaande query moet u eenvoudig de m.RowNumber + 2 . wijzigen aan wat je maar nodig hebt.

Dus als je er 60 nodig hebt, gebruik dan

m.RowNumber + 59

Zoals je kunt zien, is het erg flexibel omdat je maar één nummer hoeft te wijzigen.



  1. Som Meerdere rijen Datumverschil Mysql

  2. Aanbevelingssysteem voor een boekwinkeltoepassing

  3. Wat doet pg_escape_string precies?

  4. Hoe gebruik ik structurele annotaties om het SQL-type in te stellen op Datum in de eerste benadering van het model?