oracle 分组内排名,oracle数据分组排名次

最近项目中遇到一个分组排名次的问题如下:

数据库里有如下一张表:

depart  A      B          C        Group

一支队    1      34.4      3.3        1

二支队    1      33.3      32.2        1

三支队    2      3.3      22.2        1

四支队    3.3    4.4      33.3        1

高新区    2.2    3.3      22.2        2

经开区    3.3    23        33.3        2

曲江区    4.5    35        23.9        2

未央区    12.2    39        3.3        2

长安区    30.3    23        2.2        2

我想用语句实现如下功能,用语句返回来的是如下一张表

depart  A      B          C        Group    总分    名次

二支队    1      33.3      32.2        1      66.5    1

四支队    3.3    4.4      33.3        1      41      2

一支队    1      34.4      3.3        1      38.7    3

三支队    2      3.3      22.2        1      27.5    4

曲江区    4.5    35        23.9        2      63.4    1

经开区    3.3    23        33.3        2      59.6    2

长安区    30.3    23        2.2        2      55.5    3

未央区    12.2    39        3.3        2      54.4    4

高新区    2.2    3.3      22.2        2      27.7    5

解决办法:

select *

from

(select a.*,nvl(a.b,0)+nvl(a.c,0) 总分

,row_number() over(partition by group order by nvl(a.b,0)+nvl(a.c,0)) 名次

from tb a

)

order by group,名次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值