RANK、DENSE_RANK以及ROW_NUMBER区别
发布时间:2020-12-12 14:03:14 所属栏目:百科 来源:网络整理
导读:场景 数据库查询中,很多时候都会遇到对数据进行分组,然后组内排序加序号的需求。 应用 对于组内排序一般有三个函数可供使用,它们是RANK()、DENSE_RANK()以及ROW_NUMBER()。它们都是对分过组的数据排序加序号,不过又有各自的区别。 语法 它们的语法是一样
场景数据库查询中,很多时候都会遇到对数据进行分组,然后组内排序加序号的需求。应用 对于组内排序一般有三个函数可供使用,它们是RANK()、DENSE_RANK()以及ROW_NUMBER()。它们都是对分过组的数据排序加序号,不过又有各自的区别。 语法它们的语法是一样的,如下: [sql] view plain copy
区别 三个函数都是按照col1分组内从1开始排序 其中,ROW_NUMBER() 是没有重复值的排序(即使两条记录相同,序号也不重复的),不会有同名次。 DENSE_RANK() 是连续的排序,两个第二名仍然跟着第三名。 RANK() 是跳跃排序,两个第二名下来就是第四名。 使用 下面用一个例子代码来说明一下区别。在例子中我们对员工工资按部门分组进行排序。注意rank的序号变化。 WITHworkersAS( 结果如下,相同salaries时,RANK有重复,同时不连续。 总之,使用的时候一定要看自己的需要。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |