[英]Conditional percentage column in SQL table
我想添加一個顯示分數百分比值的列,其中每條記錄的分數除以其所在類別的分數總和。因此,新列中的值應該是 0.6、0.4、0.3 和 0.7。
Id Category Score
1 foo 6
2 foo 4
3 bar 30
4 bar 70
我能想到的最好的辦法是創建一個臨時表,使用 GROUP BY 為 Score 創建總和值,然后將其加入主表。 有沒有更有效的方法來做到這一點?
使用 window 函數:
select t.*,
score * 1.0 / sum(score) over (partition by category) as newcol
from t;
* 1.0
是因為有些數據庫做integer划分。
您也可以在不創建臨時表的情況下執行此操作。
SELECT A.* , CAST(Score*1.0/TotalScore AS DECIMAL(6,2))
FROM [table1] A
JOIN (
SELECT Category
,SUM(Score) TotalScore
FROM [table1]
GROUP BY Category
) B
ON A.Category = B.Category
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.