您的位置:程序门 -> db2 -> 基础类



sql语句问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


sql语句问题[已结贴,结贴人:qingyun67]
发表于:2007-11-06 10:20:07 楼主
有如下字段:
      branch         月计划         月达成       年计划     年累计达成  
            10                 100           80             1000             600
          20                 200           60             3500             1200
          30                 90             100             2000             1000
          40                 130           120             3000             2000

想得到如下效果:
       
          branch         月计划     月达成   月达成率     月达成率排名     年计划     年累计达成     年累计达成率     年累计达成率排名  
            10                 100           80           80%             3                   1000             600               60%                         2
          20                 200           60           30%             4                   3500             1200               34%                       4  
          30                 90             100         111%           1                   2000             1000               50%                       3    
          40                 130           120         92%             2                   3000             2000               67%                       1
达成率可以计算出,两个达成率的排名不知道怎么实现
请大家帮忙看看~~~~谢谢~~~~
发表于:2007-11-06 13:39:381楼 得分:0
up
发表于:2007-11-07 08:31:462楼 得分:0
up
发表于:2007-11-07 08:45:013楼 得分:0
up
发表于:2007-11-07 10:46:254楼 得分:0
用order   by   年累计达成率排名,月达成率排名   这样不行吗?

希望出现的是什么样子的?
发表于:2007-11-07 12:44:375楼 得分:10
select   branch,月计划,月达成,月达成率,row_number()   over(order   by   月达成率)   as   月达成率排名   from   (select   branch,月计划,月达成,月达成/月计划   as   月达成率)   as   a
年达成用同样的语句,将这两部分分别作为临时表join。
发表于:2007-11-15 00:44:216楼 得分:0
建议你看看   rank   函数用法  
发表于:2007-11-19 13:11:077楼 得分:10
select   branch,month_plan,month_result,
float(month_result)/float(month_plan)   as   mon_rate,  
row_number()   over   (order   by   float(month_result)/float(month_plan)   desc)   as   mon_order,
year_plan,year_result,float(year_result)/float(year_plan)   as   year_rate,
row_number()   over   (order   by   float(year_result)/float(year_plan)   desc)   as   year_order
from   product   as   a   order   by   a.branch@


结果:
branch             month_plan     month_result   mon_rate                                   mon_p                                 year_plan       year_result   year_rate               year_p
-----------   -----------   ------------   ------------------------   --------------------   -----------   -----------   ------------------------   --------------------
                  10                   100                       80       +8.00000000000000e-001                                         3                 1000                   600       +6.00000000000000e-001                                         2
                  20                   200                       60       +3.00000000000000e-001                                         4                 3500                 1200       +3.42857142857143e-001                                         4
                  30                     90                     100       +1.11111111111111e+000                                         1                 2000                 1000       +5.00000000000000e-001                                         3
                  40                   130                     120       +9.23076923076923e-001                                         2                 3000                 2000       +6.66666666666667e-001                                         1



快速检索

最新资讯
热门点击