mysql - 选择每个测验的最佳分数和积分排行榜

标签 mysql select group-by sum max

我的 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

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

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

   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 查询,我将不胜感激。

最佳答案

我认为您需要一个子查询来获取 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 fiddle :http://sqlfiddle.com/#!2/de1136/1/0

关于mysql - 选择每个测验的最佳分数和积分排行榜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26746522/

相关文章:

c# - 想从 mysql 表中添加一个带有 gridview(行)总和的数据,但它显示 - 在 vs05,c# 中使用未分配的局部变量 'a' 错误?

php - MySQL从多个表中选择

mysql - 检索特定月份的数据

php - 使用mysql如何统计成功DR的数量?

sql-server - 用于检索此分组数据的适当 SQL Server 方法?

MySQL 还不支持 Limit&& in/all?

php - 为什么我的数据库备份脚本不能在 php 中运行?

mysql - 按列选择并丢弃

mysql - 使用 2 个表中的字段对 UNION 进行排序

list - 将 pandas 列的系列(本身就是一个系列)分组合并