我有一张桌子,名字叫这个。
我正在这样写查询
SELECT user_id, sum(score) as score
FROM quiz_rashad.rating
group by user_id
order by score desc
那么我如何获得第12位用户的评分指数? 谢谢您的帮助。
答案 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)
我们可以在此处尝试将LIMIT
与OFFSET
一起使用:
SELECT user_id, SUM(score) AS score
FROM quiz_rashad.rating
GROUP BY user_id
ORDER BY score DESC
LIMIT 1 OFFSET 11;
此答案假定您真正想要的是第12位的记录。它还假设不会有两个用户的得分相同。