现在的位置: 首页 > 综合 > 正文

oracle数据分组排名次

2012年11月06日 ⁄ 综合 ⁄ 共 791字 ⁄ 字号 评论关闭
最近项目中遇到一个分组排名次的问题如下:

数据库里有如下一张表:
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,名次

抱歉!评论已关闭.