如何获得最接近的sum mySQL值的现有值


How to get closest SUMMED mySQL value to an existing value?

MySQL数据库中的两个表…

  • players (playerid, teamid, position, firstname, lastname)
  • 统计数据(统计数据,球员id,积分,年份)

假设我的基线球员有83分(即"现有值")。

我想从数据库中找到一个得分最接近83的球员。

注意:这个问题是类似的,但不涉及sum: Select最接近的数值与MySQL查询

所以这个通用方法是可行的…

select   points,
         abs(points - 83) as distance_from_test
from     stats
order by distance_from_test
limit 1

但我的问题是,每个玩家在同一年中都有多个"积分"条目。所以我想先计算每个玩家的总得分,然后找到最接近83的总得分。这行不通,但这基本上是我想做的…

select   SUM(points) as totalpoints,
         abs(totalpoints - 83) as distance_from_test
from     stats
order by distance_from_test
limit 1

当我尝试我得到"解析错误:语法错误,意外"(T_ENCAPSED_AND_WHITESPACE),期望标识符(T_STRING)或变量(T_VARIABLE)或数字(T_NUM_STRING)"所以我假设也许你不能与abs数学函数一起做这种类型的求和。有人能证实或否认这一点,并指出一个更明智的方向吗?

谢谢!

您需要GROUP BY player并且您必须使用计算而不是别名:

select   player,
         SUM(points) as totalpoints,
         abs(SUM(points) - 83) as distance_from_test
from     stats
GROUP BY player
order by distance_from_test
limit 1