这是我数据库的截图,我想在准确的小时内计算过去三天的平均能耗。因此,如果我在24.10.2016有消费。10h,我想在同一时间添加过去三天平均消耗量的列,因此为 23.10.2016。10h, 22.10.2016.10h和21.10.2016。10小时。我的记录每小时测量一次,所以为了计算这个平均值,我必须查看每 24 行并且没有找到任何方法。如何修改查询以获得所需的内容:
select avg(consumption) over (order by entry_date rows between 72
preceding and 24 preceding) from my_data;
还是有其他方法?
也许试试这个:
select entry_date, EXTRACT(HOUR FROM entry_date),
avg(consumption) over (PARTITION BY EXTRACT(HOUR FROM entry_date)
order by entry_date rows between 72 preceding and 24 preceding)
from my_data;
您可以使用RANGE BETWEEN INTERVAL '72' HOUR PRECEDING AND INTERVAL '24' HOUR PRECEDING
而不是ROWS
.这包括有间隙或重复时间值的情况。
我认为你可以通过使用过滤器以另一种方式做到这一点。
Select avg(consumption) from my_data
where
entry_date between @StartDate and @EndDate
and datepart(HOUR, entry_date)=@hour
如果你在MySQL上
Select avg(consumption) from my_data
where
entry_date between @StartDate and @EndDate
and HOUR(entry_date)=@hour