MYSQL-从7天中的前5天获得平均值的正确方法?
我正在跟踪每天的步数。我想用7天中最好的5天来计算平均每天的步数。一旦我得到了一个有效的查询,我将对活动分钟执行同样的操作。我的最终目标是在总共16周的时间里,获得7天中最好的5天的平均成绩 这是我到目前为止得到的查询,它是分配给每个用户的唯一ID:MYSQL-从7天中的前5天获得平均值的正确方法?,mysql,date,average,Mysql,Date,Average,我正在跟踪每天的步数。我想用7天中最好的5天来计算平均每天的步数。一旦我得到了一个有效的查询,我将对活动分钟执行同样的操作。我的最终目标是在总共16周的时间里,获得7天中最好的5天的平均成绩 这是我到目前为止得到的查询,它是分配给每个用户的唯一ID: SELECT AVG(activities.steps) AS AVGSteps, (SUM(activities.lightly_act_min)+SUM(activities.fairly_act_min)+SUM(activities.vac
SELECT AVG(activities.steps) AS AVGSteps, (SUM(activities.lightly_act_min)+SUM(activities.fairly_act_min)+SUM(activities.vact_min)) AS AVGActiveMin FROM activities, faculty WHERE
activities.activitydate BETWEEN
DATE_ADD(faculty.startsemester, INTERVAL 0 DAY) AND
DATE_ADD(faculty.startsemester, INTERVAL 7 day)
GROUP BY activities.encodedid
ORDER BY `activities`.`steps`
它正确地返回了所有7天的平均值,但我不知道如何返回7天中最好的5天的平均值
任何帮助都将不胜感激
谢谢
Tim基本上,您需要将现有查询用作子查询,这样您就可以从7天中选择最佳的5天,我估计是最高的5天,然后取平均值。请注意,中间日期包含在内,因此您的结束日期应为开始日期+6天,而不是+7天
SELECT AVG(a.steps) AS AVGSteps, SUM(a.lightly_act_min)+SUM(a.fairly_act_min)+SUM(a.vact_min) AS AVGActiveMin
FROM (SELECT * FROM activities
JOIN faculty
WHERE activities.activitydate BETWEEN
DATE_ADD(faculty.startsemester, INTERVAL 0 DAY) AND
DATE_ADD(faculty.startsemester, INTERVAL 6 DAY)
ORDER BY activities.steps DESC
LIMIT 5) a
GROUP BY a.encodedid
我使用该查询来获得7天中活动分钟数的最佳5天,但输出不正确。以下是我尝试过的代码:从SELECT*,SUMCACTIVES中选择AVGSUMActiveMin作为AVGAACTIVEMIN。轻轻地\u act\u min+SUMCACTIVES。相当地\u act\u min+SUMCACTIVES.vact\u min作为活动中的SUMCACTIVEMIN加入课程,其中activities.activitydate介于日期添加课程之间。StartMester,间隔0天和日期添加课程。StartMester,按SUMActiveMin描述的间隔6天的顺序限制5 a.encodedid的组,它输出的是所有7天的总分钟数,而不是5分钟。想法?嗨,蒂姆,你在子查询中使用分组函数,这不起作用,我认为没有必要。尝试将SUMactivities.lightly\u act\u min+SUMactivities.vact\u min作为SUMactivities更改为activities.lightly\u act\u min+activities.Farry\u act\u min+activities.vact\u min作为SUMactivities精彩!这给了我想要的结果。再次感谢!!!!不用担心,很高兴我能帮忙。