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

解决方案 »

  1.   

    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
      

  2.   

    现加排序
    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,名次
      

  3.   


    select depart,A,B,C,Group,b+c 总分,
           rank() over(partition by group order by a.b+a.c) 名次
      from tablename
     order by group, 总分