排名总和 mysql

Ranking sum in mysql

我有一个 Mysql 查询,我试图在其中对一列求和,然后按总数进行排名。

这是我的查询:

select 
@rownum:=@rownum+1 as rank,
sum(length) as total,
user_id
from submissions,
(select @rownum:=0) a WHERE id = 1067 AND status = 1
group by user_id
 order by total desc

这导致:

rank    total    user_id    
 2      65.25     1360
 1      59.50     1151
 4      58.00     1250
 6      55.75     1374
 5      51.25     1154
 3      34.75      841

我认为您必须先使用内部查询来获取总数,然后使用外部查询对它们进行排名 select,如下所示:

select @rownum:=@rownum+1 as rank,
       total,
       user_id
from 
    (select sum(length) as total,
            user_id
     from submissions
     WHERE id = 1067 AND status = 1
     group by user_id
     order by total desc)T,(select @rownum:=0)a