0

我正在尝试使用 mySQL 在指定日期范围内获取字段“权重”的每周平均值。此处工作中的扳手是重量在某些记录中以 Kg 为单位,而在其他记录中以 lbs 为单位。表中还有一个标志 (unitsMode),用于指定权重是公制还是英制。所以我需要根据unitsMode对权重字段进行计算——我正在使用CASE。但现在我不能做平均,或者说不知道“在哪里”做平均。我将其作为存储过程执行,当前代码如下:

PROCEDURE `weeklyweighttest`(IN uId INTEGER, IN rangeStart DATE, IN rangeEnd DATE)
BEGIN
select weight,unitsMode, floor(DATEDIFF(entryDate,curdate())/7) as weeks_ago, CASE unitsMode
          WHEN 1 THEN truncate((weight/2.2),2)
          WHEN 0 THEN truncate(weight,2)
         END  AS calcWeight
 FROM `mydatabasetable` WHERE userId=uId AND entryDate >= rangeStart AND entryDate <= rangeEnd
 GROUP BY floor(DATEDIFF(entryDate,curdate())/7);
END

非常感谢您在这里的任何输入

4

1 回答 1

0

尝试将AVGcase 语句放在周围:

 AVG(CASE unitsMode
         WHEN 1 THEN truncate((weight/2.2),2)
         WHEN 0 THEN truncate(weight,2)
     END) AS calcWeight
于 2013-03-14T13:50:53.350 回答