从MYSQL查询中计算列的平均值

48

我有一个表格,想要计算一列中值的平均数。这是我的查询:

SELECT SUM(P1_Score) AS value_sum FROM tblMatches Where P1_ID LIKE $playerID

有什么办法可以确定平均值(值的总和/总行数)吗?


1
有趣的是,MySQL中有一个叫做AVG的聚合函数可以实现这个功能 :D 链接 - xQbert
FYI - 你应该使用PDO,而不是将你的MySQL查询暴露给原始变量。 - Chuck Le Butt
3个回答

92

您可以这样使用 AVG 函数:

SELECT AVG(P1_Score)

谢谢...实际上这是一个统计页面,可以筛选玩家并查看比赛结果。因此,我想显示游戏的总数和每场比赛的平均游戏数。 - DoubleA
@DoubleA:那就执行不同的查询吧。它们没有任何共同之处。 - zerkms
听起来如果您需要同一组数据的总和和平均值,您可能想使用 SELECT COUNT(*), SUM(P1_Score),从中您可以提取出总和并计算平均值。对于像Rails这样的框架,您一次只能向数据库发送一个查询,假设您的数据库在另一台服务器上,则结合的查询将为您节省一次往返。 - maurice
1
他不需要两个查询,只需要 SELECT SUM(P1_Score), AVG(P1_SCORE) ... - Michael
@Michael,感谢您的澄清,我并不是说他们需要两个查询。 - zerkms

9
所以在您的情况下:
$gameswon = mysql_query("SELECT AVG(P1_Score) AS value_sum 
                         FROM tblMatches 
                         WHERE P1_ID LIKE '".$playerid."'");

5

尝试使用AVG()聚合函数而不是SUM

$gameswon = mysql_query("SELECT AVG(P1_Score) AS value_sum FROM tblMatches Where P1_ID LIKE '".$playerid."' . "GROUP BY XXXX");

而XXXX是您想要获取平均值的列,例如玩家


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接