mySQL を使用して、指定された日付範囲のフィールド「重み」の週平均を取得しようとしています。ここでの作業のスパナは、一部のレコードでは重量が Kg で保存され、他のレコードではポンドで保存されていることです。テーブルには、重量がメートル法かインペリアル法かを指定するフラグ (unitsMode) もあります。したがって、unitsMode に基づいて weight フィールドで計算を実行する必要があります。これは 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
ご意見をお寄せいただきありがとうございます。