MYSQL语句的三种写法-分数排名例子
Posted TGB-Earnest
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL语句的三种写法-分数排名例子相关的知识,希望对你有一定的参考价值。
【需求】
现在要对scores表进行排序,接下来我们用三种写法解决。
【解法】
(1)普通SQL
SELECT Score,
(SELECT COUNT(DISTINCT Score) FROM Scores WHERE Score >= s.Score) Rank
FROM Scores s ORDER BY Score DESC;
(2)变量
SELECT Score,
@rank := @rank + (@pre <> (@pre := Score)) Rank
FROM Scores, (SELECT @rank := 0, @pre := -1) INIT
ORDER BY Score DESC;
变量这里声明了两个变量
select @rank:=0,@pre:=-1
@pre表示之前的分数结果
<>表示如果不相等就为true返回1,如果相等为false为0
(3)窗口函数
# -- 不指定 partition by 相当于所有行数据一个 partition, 数据进行区内排序
# -- dense_rank() 相当于每一行数据一个窗口, 对数据进行比较
# -- rank 按照成绩排名,纯排名
# -- dense_rank --按照成绩排名,相同成绩排名一致
# -- row_number --按照成绩依次排名
# -- ntile --按照分数划分成绩梯队
select
Score,
dense_rank() over(order by score desc) as 'Rank'
from
scores;
以上是关于MYSQL语句的三种写法-分数排名例子的主要内容,如果未能解决你的问题,请参考以下文章