# 使用 ratio_to_report() 計算百分比 ###### tags: `Oracle` * 假設有一個資料表資料如下: | ItemId | GroupId | CostAmt | |--------|:-------------:|------:| | X1000 | A | 50 | | X1001 | A | 250 | | X1002 | A | 200 | | X1003 | B | 200 | | X1004 | B | 300 | * 目標是要由以上資料算出X1000佔全部成本5%,X1001佔25%... 等百分比資訊。 ```sql SELECT ItemId, GroupId, CostAmt, ratio_to_report(CostAmt) over () as Ratio FROM Cost; ``` * 另外則還要再進一步分組,算出各ItemId佔該組總成本的百分比,例如: X1000佔A群組成本總和的10%,X1001佔50%,X1002佔40%、而X1003佔B群組的40%,X1004佔60%。 ```sql SELECT ItemId, GroupId, CostAmt, ratio_to_report(CostAmt) over (PARTITION BY GroupId) as Ratio FROM Cost; ``` * Ref:[在SQL查詢中計算所佔百分比](https://blog.darkthread.net/blog/ratio-to-report/)