Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL-从7天中的前5天获得平均值的正确方法?_Mysql_Date_Average - Fatal编程技术网

MYSQL-从7天中的前5天获得平均值的正确方法?

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

我正在跟踪每天的步数。我想用7天中最好的5天来计算平均每天的步数。一旦我得到了一个有效的查询,我将对活动分钟执行同样的操作。我的最终目标是在总共16周的时间里,获得7天中最好的5天的平均成绩

这是我到目前为止得到的查询,它是分配给每个用户的唯一ID:

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精彩!这给了我想要的结果。再次感谢!!!!不用担心,很高兴我能帮忙。