2016-08-25 20 views
0

現在、次の式を使用して合計のパーセントを計算していますが、計算式はパーティションごとの合計の移動パーセントとして計算されています。数式が各パーティションの全体の合計を計算する方法はありますか?以下はSQL - 各パーティションの総計のパーセント

SELECT WINC_MAIN_DECAY.*, 
WINC_MAIN_DECAY.acquisition/NULLIF(SUM(acquisition) OVER(PARTITION BY master_show_name, spend_count ORDER BY master_date ASC),0) AS perc_total 
FROM WINC_MAIN_DECAY 

結果:

master_date master_show_name spend  spend _count acquisition perc_total 
    1/4/16   ABC   $101,010  1   10   1 
    1/11/16  ABC       1   10   0.5 
    1/18/16  ABC       1    5   0.2 
    1/25/16  ABC       1    2   0.074074074 
    2/1/16   ABC       1    1   0.035714286 
    2/8/16   ABC       1    2   0.066666667 
    2/15/16  ABC       1    1   0.032258065 
    2/22/16  ABC   $101,010  2    6   1 
    2/29/16  ABC       2    3   0.333333333 
    3/7/16   ABC   $101,010  3    5   1 
+0

必ず私は理解していません。それでは、あなたが今得ているものと比較して、期待される成果はどのようになるでしょうか? – sstan

+0

行1の例は次のようになります。10/31 = .32 10 /(最初のパーティションの全体の合計)、3行目:5/31 = .16 –

答えて

1

あなたが累積合計をしたいが、その代わりに、パーティションごとのストレートフォワード合計していない場合は、すべてを行う必要がsumからorder by句を削除していますウィンドウ関数。

SUM(acquisition) OVER(PARTITION BY master_show_name, spend_count ORDER BY master_date ASC) 

変更し、それに:の代わりに、換言すれば、

SUM(acquisition) OVER(PARTITION BY master_show_name, spend_count)