我试图在MySQL中的数据库表上运行查询。我试图找出连续秒的一段时间内瓦特的最大平均值。因此,例如,我有一个表(提供的图片),我想查询表,找到特定人员表中存在的60个连续秒的最大平均瓦数。我附上了表格的图片,以便您可以看到数据结构。非常感谢您提供的任何帮助。
这是我试过的,但无法弄清楚连续的时间片。
select max(avg_watts)
from
(
SELECT AVG(watts) avg_watts FROM tblworkoutdata GROUP BY personid
) tmp
这并不像看起来那么容易。假设您有这些数据:
minute watts 1 100 59 200 60 300 70 300 80 500 120 100
这给出了以下60个连续分钟范围:
minute avg watts 1-60 150 59-80 325 70-120 300
但为什么规则会找到这些范围?我使用以下算法:
然后
查询:
select max(avg_watts)
from
(
select
(
select avg(watts)
from tblworkoutdata data
where data.time between groups.t1 and groups.t2
) as avg_watts
from
(
select min(t1) as t1, t2
from
(
select
time as t1,
(
select max(tbl2.time)
from tblworkoutdata tbl2
where tbl2.time between tbl1.time and tbl1.time + 59
) as t2
from tblworkoutdata tbl1
) pairs
group by t2
) groups
) averages;
即使:z zxswい
你当然可以将子查询从http://rextester.com/OZT99379子句移到SELECT
子句中,如果你更喜欢这样的话。
(每个人都很容易得到这个结果。只需在任何地方都包含人员ID,然后将结果分组。)
您需要使用包含日期时间的任何列将数据表连接到自身。就像是:
FROM