これは、リートコードのデータベースの178.スコアランキングを行ったときに感じたものです。詳細については、https://blog.csdn.net/weixin_42845682/article/details/105252542を参照してください。
1.稠密ランク()の役割
density_rankの役割は、ソートすることです。また、重複する値がある場合、ランキングには影響しません。
たとえば、テーブルの名前はscoreで、列はidとscoreです。
id score
1 80
2 90
3 80
4 40
score_rank()を使用してスコアをソートすると、次の効果が得られます。
90 1
80 2
80 2
40 3
この方法は非常に便利ですが、mysqlでは使用できません...
第二に、MySQLでデンスランク()の効果を達成する方法
次のように:
select
s1.score Score,
(select
count(distinct(s2.score))
from scores s2
where s2.score >= s1.score
) as Rank
from scores s1
order by Rank