我试图在mysql中的数据库表上运行一个查询。我试图计算出连续几秒钟内瓦特的最大平均值。例如,我有一个表(提供的图片),我想查询这个表,找出表中某个人连续60秒的最大平均瓦特。我附上一张表的图片,以便您可以看到数据结构。非常感谢您的帮助。
这是我试过的,但无法计算出连续的时间段。
select max(avg_watts)
from
(
SELECT AVG(watts) avg_watts FROM tblworkoutdata GROUP BY personid
) tmp
db表截图
2条答案
按热度按时间nhaq1z211#
这不像看上去那么容易。假设您有以下数据:
这将提供以下连续60分钟的范围:
但为什么要用什么规则来寻找这些范围呢?我将使用以下算法:
对于表中的每分钟,找出仍在相同范围内的最大分钟数(1->60,59->80,60->80,70->120,80->120,120->120)。
从这些对中取每结束分钟的最小开始分钟数(1<-59,59<-80,70<-120)
然后
对于每个范围,找到平均瓦特
从这些贪婪中得到最大的回报
查询:
rextester演示:http://rextester.com/ozt99379
当然,您可以将子查询从
SELECT
从句至FROM
如果你更喜欢这个的话。(每个人都很容易得到这个结果。只需将personid包含在各处,并根据它对结果进行分组。)
xtupzzrd2#
您需要使用包含日期时间的任何列将数据表连接到自身。比如: