好的,所以我有一个用户表,并希望获得最高分数除以分数的用户的最大值。以下是我正在寻找的粗略想法:
SELECT MAX(SUM(points)/SUM(score)) FROM users
我对将两列相加并进行划分不感兴趣,而是对划分每个用户的分数和得分并从批次中检索最高值感兴趣。
也许你可以用一个子查询来做到这一点:
Select max(points_over_Score)
from
(Select points/score AS points_over_score
from users);
正如评论中提到的那样,这可能可以缩短为
SELECT MAX(points/score) FROM users;
您对您正在尝试做的事情的书面描述并不清楚为什么您的示例包含SUM
在其中,所以我没有使用它。
此外,像这样的代码问题更适合stackoverflow.com。您可以标记自己的问题,要求版主迁移它。
如果您需要将所有分数相加,然后将所有分数相加,然后将两者相除,FrustratedWithFormsDesigner 的答案将不起作用。该答案将每个点除以分数,然后返回最高答案。
这应该有效:
SELECT MAX(sum_points / sum_score) from
(SELECT SUM(points) as sum_points, SUM(score) as sum_score FROM users)
顺便说一句,这会返回一个“不寻常”的百分比。您可能希望将分数除以分数。例如,如果您在 100 分中获得 70 分,即为 70%,或得分 (70) / 分 (100)。
我不确定这是否是由于这篇文章的年龄或当时的 MySQL 版本,但是当我尝试上述解决方案时,抛出了以下错误:
ERROR 1248 (42000) : 每个派生表都必须有自己的别名
我能够使用以下方法解决此问题:
SELECT MAX(sum_points / sum_score) from (SELECT SUM(points) as sum_points, SUM(score) as sum_score FROM users) as max_value;