簡體   English   中英

SQL 表中的條件百分比列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM