我有一些表的点表:
| user_id | points |
--------------------
| 1 | 10 |
| 5 | 10 |
| 5 | 50 |
| 3 | 15 |
| 3 | 10 |
我想获得每个使用MySQL的用户的排名。
我已经看过这篇文章,MySQL在ORDER BY中获得行位置,但其中没有SUM,因此无法与SUM一起使用。
我希望能够获得给定user_id的等级。
在此先感谢您的帮助!
提醒OP的问题:
我希望能够获得给定user_id的等级。
为了实际在上执行操作,@rank
您必须使用另一个派生表(是的,效率低下,因此最好不要在MySQL中处理此表):
SELECT * FROM (
SELECT s.*, @rank := @rank + 1 rank FROM (
SELECT user_id, sum(points) TotalPoints FROM t
GROUP BY user_id
) s, (SELECT @rank := 0) init
ORDER BY TotalPoints DESC
) r
WHERE user_id = 3
输出量
| USER_ID | TOTALPOINTS | RANK |
|---------|-------------|------|
| 3 | 25 | 2 |
该过程基本上是:
在这里摆弄。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句