表A 字段 中有 订单类型PART_ORDER_TYPE,订单金额PART_ORDER_AMOUNT
     根据PART_ORDER_TYPE(有4种类型)分别计算出各种类型对应PART_ORDER_AMOUNT的和,以及每种类型PART_ORDER_AMOUNT和占总订单金额的百分比
请问种如何写SELECT,谢谢

解决方案 »

  1.   

    select PART_ORDER_TYPE,sum(PART_ORDER_AMOUNT) "总和",
    sum(PART_ORDER_AMOUNT)/(select sum(PART_ORDER_AMOUNT) from a) "百分比" 
    from a group by PART_ORDER_TYPE;
      

  2.   

    to 79bo(山芋) 
    不对哦,这样比出来是100%有没有其他人帮忙呀~~~谢谢先
      

  3.   

    select tt.PART_ORDER_TYPE,
           sum(tt.PART_ORDER_AMOUNT) TOTAL_AMOUNT,
           round(RATIO_TO_REPORT(sum(tt.PART_ORDER_AMOUNT)) over() * 100, 2) || '%' as percent
      from A tt
     group by tt.PART_ORDER_TYPE;
      

  4.   

    要根据类型求和,再求各个类型占总共的百分比这里没有体现根据类型来SUM金额哦  百分比有了
      

  5.   

    .不知道你数据什么样的....
    SQL> select * from a;PART_ORDER_TYPE PART_ORDER_AMOUNT
    --------------- -----------------
                  1                 1
                  1                 2
                  2                 3
                  2                 4
                  3                 5
                  3                 6
                  3                 7
                  3                 8
                  4                 9
                  4                 7
                  4                 6
                  4                 5
                  4                 4已选择13行。select PART_ORDER_TYPE,sum(PART_ORDER_AMOUNT) "总和",
    round(sum(PART_ORDER_AMOUNT)/(select sum(PART_ORDER_AMOUNT) from a)*100,2) "百分比" 
    from a group by PART_ORDER_TYPE;PART_ORDER_TYPE       总和     百分比
    --------------- ---------- ----------
                  1          3       4.48
                  2          7      10.45
                  3         26      38.81
                  4         31      46.27SQL>
      

  6.   

    select
        aa.part_order_type
       ,aa.part_total
       ,case when bb.total = 0 then 0 else aa.part_total / bb.total end
      from (
            select a.part_order_type, sum(a.part_order_amount) part_total
              from a
             group by a.part_order_type
            ) aa
      left join (select sum(a.part_order_amount) total from a) bb
        on 1 = 1