这里主要记一下SQL中窗口函数的3中排序函数(row_number,rank,dense_rank)的使用及分别。
1、使用方法
row_number()/rank()/dense_rank() over(partition by [分区的依据列1,分区依据列2,...] order by [排序依据列1,排序依据列2,...])
--可以不设置分区,但一定要有排序依据列,别问,问就是你在排序啊。。。
--如果分区,排序函数就会在每个分区内部进行排序
2、区别
row_number() 通常意义上的排序,不受相同值影响,如 1,2,3,4;
rank() 有相同序号,但排名具有跳跃性,比如 1,2,2,4;
dense_rank() 有相同序号,排名不具有跳跃性,如 1,2,2,3;
简记,row_number() 普通排序,rank() 跳跃排序,dense_rank() 非跳跃排序。
3、例子
emmmm....
MySQL版本不够,等我回头装一个8.0以上的,至于hive和impala有没有版本限制,回头查查。