如何在mysql中查找泛型列的索引(id)
我有一个名称评级如下的表 我是这样写这个问题的如何在mysql中查找泛型列的索引(id),mysql,sql,Mysql,Sql,我有一个名称评级如下的表 我是这样写这个问题的 SELECT user_id, sum(score) as score FROM quiz_rashad.rating group by user_id order by score desc 那么我如何获得第12位用户的评级指数呢? 谢谢您的帮助。我们可以尝试将限制与偏移一起使用,如下所示: SELECT user_id, SUM(score) AS score FROM quiz_rashad.rating GROUP BY user_id
SELECT user_id, sum(score) as score
FROM quiz_rashad.rating
group by user_id
order by score desc
那么我如何获得第12位用户的评级指数呢?
谢谢您的帮助。我们可以尝试将
限制
与偏移
一起使用,如下所示:
SELECT user_id, SUM(score) AS score
FROM quiz_rashad.rating
GROUP BY user_id
ORDER BY score DESC
LIMIT 1 OFFSET 11;
这个答案假设你真正想要的是第十二位的记录。它还假设不会有两个用户因相同的分数而并列。假设“第12个用户”是指ID为12的用户:
在MySQL 8.0+中,您可以使用densite\u rank()
编辑: 对于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)
你在用什么?SQL-Server还是MYSQL?我使用的是MYSQL版本8什么版本的MYSQL?我是唯一一个什么都不懂的人吗?评级指数??你是说排名对吗?@TimBiegeleisen:据我所知,他们希望排名高于用户。用户的总分越高,其排名就越高。总分是表中各个分数的总和。内部
SELECT
计算所有用户的排名。现在的问题是:ID为12的用户的排名是什么?也就是说,为ID为12的用户查询内部选择。但这是最好的猜测。我的理解可能也错了。对不起,我的mysql版本是5.7
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)