【发布时间】:2019-01-18 00:02:29
【问题描述】:
rank points player_id quiz_id
1 88 1 40
2 80 3 40
3 30 3 41
4 20 1 41
从以下查询获取此输出:
SELECT m.rank,
m.scorer AS points,
m.player_id
FROM
( SELECT d.player_id,
d.scorer, @rownum := @rownum + 1 AS rank
FROM
( SELECT t.player_id,
SUM(t.score) AS scorer
FROM answers t
JOIN PROFILE ON profile.player_id = t.player_id
JOIN quiz ON t.quiz_id = quiz.id
WHERE t.is_active = 1
AND quiz.contest_id = 1
AND profile.signin_source_id != 1
AND profile.is_active = 1
AND t.quiz_id IN (1,
2)
GROUP BY t.player_id
ORDER BY scorer DESC, t.created_utc ASC) d,
(SELECT @rownum := 0) r) m
WHERE m.scorer > 0
但是,我想要的输出是每个级别分离出来的排名。
rank points player_id quiz_id
1 88 1 40
2 80 3 40
1 30 3 41
2 20 1 41
我关注了这些:
How to perform grouped ranking in MySQL
但无法获得所需的输出。任何建议或帮助表示赞赏。
【问题讨论】:
-
你使用的是什么 MySQL 版本?
-
5.7 是 MySQL 版本。
标签: mysql