Frank (no reg): An alle Antworter

Beitrag lesen

Servus,

gegeben sein ein Tabellenschema ... ich verwende mal T-SQL fuer Microsofts SQL Server ... Datentypen sind dann ggf nach mySql zu uebersetzen

  
CREATE TABLE T1 (  
  ID int not null identity(1,1) primar key clustered,  
  Menge int not null default (0),  
  TmStamp datetime not null default (CURRENT_TIMESTAMP)  
)  

Daten waeren dann in etwa so
ID       Menge              TmStmp
------------------------------------------------------------------
1        1                       10:00:01.123
2        3                       10:00:07.123
3        2                       10:02:08.123
4        2                       10:04:01.123
5        3                       10:05:06.666
6        4                       10:08:01.777
7        3                       10:12:01.123
8        4                       10:14:02.666

Um jetzt ein Moving Average oder Moving Sum zu bekommen

  
SELECT a.Id, a.TmStmp, SUM(b.Menge) AS MovingSum, Min(b.TmStmp) AS SampleBegin, Max(b.TmStmp) AS SampleEnd, COUNT(b.Id) AS CountSamples  
  FROM T1 a  
  INNER JOIN T1 b ON b.TmStmp <= a.TmStamp   -- alternatively DATEDIFF(s, b.TmStmp, a.TmStmp) BETWEEN 0 AND 600  
  WHERE DATEDIFF(s, b.TmStmp, a.TmStmp) BETWEEN 0 AND 600  
  GROUP BY a.Id, a.TmStmp  
  ORDER BY a.Id  

Und diese Ergebnisse kannst du dann filtern mit einem beliebigen Datum/Zeit als Parameter und einem ORDER BY TmStmp DESC und LIMIT 1 ...

So schwer war's doch nich, oder?

Ciao und Gruss aus der Kararibik, Frank