1

我遇到了 Mysql 中的平均值问题,不知道如何继续。一个简单的例子。我有一个看起来像这样的表:

DATTIME              VALUE
2013-06-01 00:15:00  10
2013-06-01 00:30:00  12
2013-06-01 00:45:00  11
2013-06-01 01:00:00  15
2013-06-01 01:15:00  13
2013-06-01 01:30:00  14
2013-06-01 01:45:00  11
2013-06-01 02:00:00  10
2013-06-01 02:15:00  10
2013-06-01 02:30:00  12
2013-06-01 02:45:00  11
2013-06-01 03:00:00  15
...

现在我想要从每一行的“视角”获得过去 2 小时的平均值。因此,与时间“02:15:00”一致,我希望在“02:30:00”行中获得从“00:15:00”到“02:15:00”的平均值“01:30:00”到“02:30:00”。所有使用地板和类似功能的尝试都没有带来预期的结果。

有人可以指出我正确的方向。可能我走错路了...

预先感谢。

干杯,乌维

4

1 回答 1

2
select  *
,       (
        select  avg(value)
        from    YourTable yt2
        where   yt2.dattime between 
                    yt1.dattime - interval 2 hour
                    and yt1.dattime
        ) as LastTwoHourAverage
from    YourTable yt1

如果上面的速度很慢,你可以试试这个变体:

select  yt1.dattime
,       yt1.value
,       avg(yt2.value) as LastTwoHourAverage
from    YourTable yt1
left join
        YourTable yt2
on      yt2.dattime between 
            yt1.dattime - interval 2 hour
            and yt1.dattime
于 2013-06-23T16:35:09.230 回答