1、窗口函数之dense_rank()使用背景:
上一章我们不是讨论了窗口函数rank()吗?使用rank()组内排序不是结果出现了跳级吗?就是同组同分数的“张三”和“安一”,为并列第一,然后同组“李二”跳过序号2,从序号3开始,仔细瞅瞅下图,发现了是不是这样?那如何不跳过序号2呢?那就看看dense_rank()这个窗口函数呗。
2、窗口函数dense_rank()的使用方法
SELECT
id,
NAME AS '姓名',
score AS '分数',
class AS '班级',
dense_rank() over (PARTITION BY class ORDER BY score DESC) AS '班级名次'
FROM
backup_csm.`demo`
查询结果如下图:
使用dense_rank()查询的结果“班级名次”不会出现跳级,不会出现像使用rank()后“班级名次”排序结果是1 1 3 ,而使用dense_rank()后“班级名次”查询的结果1 1 2,那么问题又来了,那如何让同组同分的“班级名次”按行号递增,不出现同号和跳级,请看下一章节噢。