今天给大家推送第一篇SQL文章《辨析函数 ROW_NUMBER(), RANK(), and DENSE_RANK() 》,接下来所讨论的全部内容都是基于ORACLE数据库
其实这三个函数的区别很容易记住,首先,创建一个reference table 叫做refer_table.
CREATE TABLE refer_table ( ref_var varchar(1));
insert into refer_table(ref_var) values('a');insert into refer_table(ref_var) values('a');insert into refer_table(ref_var) values('a');insert into refer_table(ref_var) values('b');insert into refer_table(ref_var) values('c');insert into refer_table(ref_var) values('c');insert into refer_table(ref_var) values('d');insert into refer_table(ref_var) values('e');
commit;
接下来,我们对这个table同时运行上述三个函数,运行下述代码
SELECT
ref_var,
ROW_NUMBER() OVER(ORDER BY ref_var) as row_number,
RANK() OVER(ORDER BY ref_var) as rank,
DENSE_RANK() OVER(ORDER BY ref_var) as dense_rank
FROM refer_tableORDER BY 1, 2
得到下面的结果
ref_var row_number rank dense_ranka 1 1 1
a 2 1 1
a 3 1 1
b 4 4 2
c 5 5 3
c 6 5 3
d 7 7 4
e 8 8 5
由上述结果可对ROW_NUMBER(), RANK(), and DENSE_RANK() 区别做如下总结:
3. dense_rank()排序的时候,针对相同元素(a,a,a),会赋予相同的序号值1, 紧接着对元素b赋值是2,也就是序号值是连续可重复的。
在今后的日子,文章会尽量保持一周一更的频率,希望大家喜欢!如有任何疑问,欢迎后台回复,我看到的话都会回复的。
本文分享自 小草学Python和SQL 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!