[英]How to find rank using mysql or java(jdbc)
我已经尝试过此mysql代码以查找等级/位置。 它起作用了,我已经意识到,如果出现平局,它会给出相同的等级,但是此后它应该跳过下一个等级,例如如果三个人并列第二,那么下一个等级应该是5而不是3。我希望您能理解。
SET @RANK=0,@PREV=NULL;
SELECT RANK,total FROM
(
SELECT @RANK:=IF(@PREV=COMP,@RANK,@RANK+1) AS RANK,
@PREV:=COMP AS total,ADM
FROM my_table
ORDER BY total DESC
)
AS RESULT;
谁可以在这里帮助我,或者是否有人可以帮助我在java中开发一种返回等级的方法。 我会感激的
如果要用Java做到这一点,一种方法是获取排名并将其排序(根据排名的工作方式升序或降序)。 阅读排序后的数组将为您提供排名。
编辑:通过“给您排名”,我的意思是您现在可以轻松地通过数组分配排名。 从索引0开始,所有元素的等级为0(或其他),而元素的值未更改。 当值改变时,根据需要增加等级并以相同的方式继续。
您可以添加另一个始终递增的等级,如果COMP的值发生变化,则将当前等级设置为该等级。
SELECT Rank,total
FROM
(
SELECT @Rank:=IF(@Prev=COMP, @Rank, @FullRank) AS Rank,
ADM,
@Prev:=COMP,
COMP AS total,
@FullRank:=@FullRank+1
FROM my_table
CROSS JOIN (SELECT @Rank:=0, @Prev:='fred', @FullRank:=1) Sub1
ORDER BY total DESC
) RESULT
请注意,MySQL可以优化查询中用户变量的顺序,这有时会引起问题。 将@Prev:= COMP AS总计作为一行(而不是像我在上面的查询中所做的那样,将其拆分为2个不同的选择项)似乎使第一级项目变得一团糟。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.