У меня есть этот запрос, который вычисляет СРЕДНЕМ для измерений днем теперь я хотел бы иметь для каждой строки в СРЕДНЕМ со всех ближайших 5 дней с этогоПолучить среднее в течение следующих 5 строк
ох .. . Я использую Sql Server
Вот что я имею
SELECT Cast(Cast (Datepart(year, Dateadd(minute, (a.quarternumber * 15),
'2000-01-01'))
AS
VARCHAR(4))
+ '-'
+ Cast (Datepart(month, Dateadd(minute, (a.quarternumber * 15),
'2000-01-01'))
AS VARCHAR(4))
+ '-'
+ Cast (Datepart(day, Dateadd(minute, (a.quarternumber * 15),
'2000-01-01')
)AS
VARCHAR(4))
+ ' ' AS DATETIME) AS [TimeStamp],
--AVG(a.value) over(order by a.value) as exper,
Round(Avg(a.value), 2) AS Value
FROM measurements.archive a
INNER JOIN measurements.points p
ON a.pointid = p.id
INNER JOIN fifthcore..cm_lod_devices ld
ON ld.uuid = p.logicaldeviceuuid
WHERE ld.id IN (SELECT value
FROM @LodDeviceIds)
AND p.name = @Name
AND a.quarternumber BETWEEN @ChartBeginNumber AND @ChartEndNumber
GROUP BY Datepart(year, Dateadd(minute, (a.quarternumber * 15), '2000-01-01')
),
Datepart(month, Dateadd(minute, (a.quarternumber * 15), '2000-01-01'
)),
Datepart(day, Dateadd(minute, (a.quarternumber * 15), '2000-01-01'))
ORDER BY Datepart(day, Dateadd(minute, (a.quarternumber * 15), '2000-01-01'))
Я WHAS глядя в нечто подобное, но просто не могу заставить его работать
AVG(y) OVER(ORDER BY x
3 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING)
Table :extra column that would avg the result of next five days
2014-07-01 00:00:00.000 16.780000 --> 15.8
2014-07-02 00:00:00.000 15.940000 --> 16
2014-07-03 00:00:00.000 16.790000
2014-07-04 00:00:00.000 16.790000
2014-07-05 00:00:00.000 16.040000
2014-07-06 00:00:00.000 16.500000
2014-07-07 00:00:00.000 16.790000
2014-07-08 00:00:00.000 16.790000
2014-07-09 00:00:00.000 16.790000
Какие СУБД вы используете? –
ah, im using SQL Server –
Я отметил ваш вопрос соответствующим образом. Когда вы задаете будущие вопросы, добавьте тег для своих РСУБД в дополнение к тегу SQL (так как ответы часто зависят от поставщика). –