Row_number(), Rank() ,Dense_rank() 主要用于排序
ROW_NUMBER()函数作用就是将select查询到的数据进行排序,每一条数据加一个序号
Rank()
RANK()函数,顾名思义排名函数,可以对某一个字段进行排名,这里为什么和ROW_NUMBER()不一样那,ROW_NUMBER()是排序,当存在相同成绩时,ROW_NUMBER()会依次进行排序,他们序号不相同,而Rank()则不一样出现相同的,他们的排名是一样的。
DENSE_RANK()函数也是排名函数,和RANK()功能相似,也是对字段进行排名。
dense_rank 排序连续,rank 不连续。
范例:
存在如下数据
name score
libai 98
dufu 98
zhangjiuling 96
tanbohu 93
row_number()后 libai 1 dufu 2 zhangjiuling 3 tanbohu 4
Rank() libai 1 dufu1 zhangjiuling 3 tanbohu 4
DENSE_RANK() libai 1 dufu1 zhangjiuling 2 tanbohu 3
以上三函数基本会结合partition by XXX order by 一起使用。可用于排序也可用于排序后筛除无用数据。
例如 table :score_class
name score updateTime
A1 97