【发布时间】:2012-11-08 10:30:20
【问题描述】:
我想在 sql 中使用 AVG 函数来返回一些值的工作平均值(即基于上周而不是总体平均值)。我正在计算两个值,weight 和 restingHR(心率)。我对每个都有以下 sql 语句:
SELECT AVG( weight ) AS average
FROM stats
WHERE userid='$userid'
ORDER BY date DESC LIMIT 7
SELECT AVG( restingHR ) AS average
FROM stats
WHERE userid='$userid'
ORDER BY date DESC LIMIT 7
weight 我得到的值是 82.56 但应该是 83.35 这不是一个大错误,我在使用它时会四舍五入,所以没什么大不了的。
但是对于 restingHR,我得到 45.96 而应该是 57.57,这是一个巨大的差异。
我不明白为什么会出现这样的问题。非常感谢任何帮助。
谢谢
【问题讨论】:
-
你怎么知道值应该是83.35?请问您可以发布您正在使用的数据吗?
-
您确定使用的列不包含
NULL值吗? -
这里的
order by和limit到底是什么意思? -
粘贴这个查询的结果,让我们看看你的数据
SELECT weight AS average FROM stats WHERE userid='$userid' ORDER BY date DESC LIMIT 7 -
您可以尝试使用 between 进行过滤,而不是使用 order by:WHERE userid='$userid' and date BETWEEN '01/11/2012' and '09/11/2012'...跨度>