[英]How to store rank of a user in a level with his score in SQL table
对于MySql 8.0,您可以使用rank()
:
select
t.*,
rank() over (partition by t.level order by t.score DESC) `rank`
from tablename t
order by level, user
参见演示 。
对于早期版本:
select
t.*,
(select count(*) from tablename where level = t.level and score > t.score) + 1 `rank`
from tablename t
参见演示 。
结果:
| level | user | score | rank |
| ----- | ---- | ----- | ---- |
| 1 | A | 10 | 3 |
| 1 | B | 15 | 2 |
| 1 | C | 30 | 1 |
| 2 | A | 20 | 2 |
| 2 | B | 10 | 3 |
| 2 | C | 40 | 1 |
尝试这个:
select level,user,score,
rank() over(partition by level order by score desc) as rank
from Tablename;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.