【问题标题】:Select best score per quiz and sum points leaderboard选择每个测验的最佳分数和总分排行榜
【发布时间】:2014-11-04 22:48:16
【问题描述】:

我有这样的 MySql 表

quiz_id | user_id | points 
--------+---------+--------
1       | 1       | 2         
1       | 1       | 7         
3       | 1       | 7       
2       | 1       | 5      
1       | 2       | 7      
2       | 2       | 7      
3       | 2       | 2 
3       | 2       | 6

用户可以重玩游戏尝试获得最高分..

我需要查询以获取用户参加的每个测验的最佳“MAX”分数,并按所有测验的总分排序,并使其看起来像这样:

   user_id  | SUM(points) 
    --------+--------
    2       | 20             
    1       | 19      

我已经尝试用这个来完成它的第二部分

SELECT user_id, SUM(points) 
FROM Quiz_list 
GROUP BY user_id 
ORDER BY SUM(points) DESC   

如果有人能告诉我它应该是什么样的 sql 查询,我将不胜感激。

【问题讨论】:

    标签: mysql select group-by sum max


    【解决方案1】:

    我认为您需要一个子查询来获取max(),然后执行sum()

    select user_id, sum(points) as sumpoints
    from (select user_id, quiz_id, max(points) as points
          from quiz_list
          group by user_id, quiz_id
         ) uq
    group by user_id
    order by sumpoints desc;
    

    SQL 小提琴:http://sqlfiddle.com/#!2/de1136/1/0

    【讨论】:

    • 这正是我所需要的 :) 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 2014-11-13
    • 2021-08-04
    • 1970-01-01
    相关资源
    最近更新 更多