有一个表A结构如下:
银行名称(bankName)    卡类型(cardType)    交易金额(tradeMoney)  交易日期(tradeDate)现在要查询这样一个结果
 
交易日期  银行名称 卡类型  交易金额  所占比例
要根据 交易日期  银行名称 卡类型 三项分组所占比例的意思是:某天某家银行某种卡类型的交易额占该天所有银行所有卡类型的交易额百分比

解决方案 »

  1.   

    看看这个行不行
    select tradeDate,bankName,cardType,sum(tradeMoney),sum(tradeMoney)/(select sum(tradeMoney) from test) from test group by tradeDate,bankName,cardType;  
      

  2.   

    SELECT TRADEDATE,
           BANKNAME,
           CARDTYPE,
           SUM_TRADEMONEY,
           SUM_TRADEMONEY / SUM(SUM_TRADEMONEY) OVER(PARTITION BY TRADEDATE) AS 占比  
      FROM (SELECT TRADEDATE,
                   BANKNAME,
                   CARDTYPE,
                   SUM(TRADEMONEY) SUM_TRADEMONEY
              FROM TEST
             GROUP BY TRADEDATE,
                      BANKNAME,
                      CARDTYPE)
      

  3.   

    select tradeDate,bankName,cardType,tradeMoney,ratio_to_report(tradeMoney) over()
    from(
    select tradeDate,bankName,cardType,sum(tradeMoney) tradeMoney
    from t
    group by tradeDate,bankName,cardType
    )
    where ...