您的位置:首页 > 数据库 > Oracle

Oracle 聚合函数 排名函数 rank dense_rank

2009-09-07 13:54 381 查看
数据库中经常会有会某列进行排名,分组排名,求名次的需求,以前用的比较笨的方法 先order by 某列,然后用rownum
今天学到两个函数可以实现这样的功能 rank,dense_rank
具体语法如下:RANK ( ) OVER ( [query_partition_clause] order_by_clause )。

dense_rank与rank()用法相当,但是有一个区别:dence_rank在处理相同的等级时,等级的数值不会跳过。rank则跳过。

例如:表

A B C
a liu wang
a jin shu
a cai kai
b yang du
b lin ying
b yao cai
b yang 99

例如:当rank时为:

select m.a,m.b,m.c,rank() over(partition by a order by b) liu from test3 m

A B C LIU
a cai kai 1
a jin shu 2
a liu wang 3
b lin ying 1
b yang du 2
b yang 99 2
b yao cai 4

而如果用dense_rank时为:
select m.a,m.b,m.c,dense_rank() over(partition by a order by b) liu from test3 m

A B C LIU
a cai kai 1
a jin shu 2
a liu wang 3
b lin ying 1
b yang du 2
b yang 99 2
b yao cai 3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: