[英]how to find index ( id ) of generic column in mysql
我有一张桌子,上面有这个名字。
我正在写这样的查询
SELECT user_id, sum(score) as score
FROM quiz_rashad.rating
group by user_id
order by score desc
那么我如何获得第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)
我们可以在这里尝试使用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;
该答案假设您真正想要的是第十二位的记录。 它还假定不会为相同的分数而捆绑两个用户。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.