8

好的,所以我有一个用户表,并希望获得最高分数除以分数的用户的最大值。以下是我正在寻找的粗略想法:

SELECT MAX(SUM(points)/SUM(score)) FROM users

我对将两列相加并进行划分不感兴趣,而是对划分每个用户的分数和得分并从批次中检索最高值感兴趣。

4

3 回答 3

4

也许你可以用一个子查询来做到这一点:

Select max(points_over_Score)
from 
    (Select points/score AS points_over_score
    from users);

正如评论中提到的那样,这可能可以缩短为

SELECT MAX(points/score) FROM users;

您对您正在尝试做的事情的书面描述并不清楚为什么您的示例包含SUM在其中,所以我没有使用它。

此外,像这样的代码问题更适合stackoverflow.com。您可以标记自己的问题,要求版主迁移它。

于 2012-06-25T14:22:32.233 回答
0

如果您需要将所有分数相加,然后将所有分数相加,然后将两者相除,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)。

于 2012-06-25T16:44:36.057 回答
0

我不确定这是否是由于这篇文章的年龄或当时的 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;

于 2018-04-23T20:03:47.293 回答