如何在mysql中找到通用列的索引(id)

时间:2019-01-14 13:38:36

标签: mysql sql

我有一张桌子,名字叫这个。

a busy cat

我正在这样写查询

SELECT user_id, sum(score) as score
FROM quiz_rashad.rating
group by user_id
order by score desc

那么我如何获得第12位用户的评分指数? 谢谢您的帮助。

2 个答案:

答案 0 :(得分:2)

假设“第12个用户”是指ID为12的用户:

在MySQL 8.0+中,您可以使用dense_rank()

SELECT x.rating_index
       FROM (SELECT r.user_id,
                    dense_rank() OVER (ORDER BY sum(r.score) DESC) rating_index
                    FROM quiz_rashad.rating r
                    GROUP BY r.user_id) x
       WHERE x.user_id = 12;

编辑:

对于MySQL 5.7,您必须使用子查询来使总得分的唯一计数大于或等于ID为12的用户的总得分。

SELECT count(DISTINCT x.score) rating_index
       FROM (SELECT r.user_id,
                    sum(r.score) score
                    FROM quiz_rashad.rating r
                    GROUP BY r.user_id) x
       WHERE x.score >= (SELECT sum(r.score)
                                FROM quiz_rashad.rating r
                                WHERE r.user_id = 12)

答案 1 :(得分:1)

我们可以在此处尝试将LIMITOFFSET一起使用:

SELECT user_id, SUM(score) AS score
FROM quiz_rashad.rating
GROUP BY user_id
ORDER BY score DESC
LIMIT 1 OFFSET 11;

此答案假定您真正想要的是第12位的记录。它还假设不会有两个用户的得分相同。