MySQL-正确的方法可以从7天的前五名中获得平均水平



我正在跟踪步骤/天的数量。我想在7天内使用5天的最佳日子来获得平均步骤/天。一旦我对此进行了工作查询,我将在积极的几分钟内进行同样的操作。我的最终目标是在总计16周的7天中平均获得最佳的5天。

这是我的sqlfiddle

这是我到目前为止的查询(EncodedID是分配给每个用户的唯一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个最佳日期中返回平均值。

任何帮助将不胜感激。

谢谢,

tim

您需要基本上将现有查询用作子查询,以便您可以在7中选择最佳的5天(我认为5个最高天(,然后以平均值来选择。请注意,BETWEEN是包含的,因此您的结束日期应为开始日期 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

最新更新