2016-06-11 108 views
0

我想要得到weight佔每個人總共weight的百分比。尺寸相同但重量不同的百分比計算

這裏是我的數據:

TableA 

Name  | Size | Weight 
------------------------------------ 
Jamie  | 0.25 | 48 
Jamie  | 0.50 | 48 
Taylor  | 0.25 | 55 
Taylor  | 0.30 | 54 
Taylor  | 0.45 | 48 
Taylor  | 0.45 | 60 

和這裏的輸出我想:

Name | Size  | Percentage | Weight 
--------------------------------------------------------------- 
Jamie | 0.25  | 50%  | 48 
Jamie | 0.50  | 50%  | 48 
Taylor | 0.25  | 35.03%  | 55 
Taylor | 0.30  | 34.39%  | 54 
Taylor | 0.45  | 49.76%  | 108 

如:
傑米的總重量爲96(48 + 48),所以我必須計算他每個行的重量值爲96的百分比。

而對於泰勒有大小0.45倍,但不同的權重,以便在輸出應該總和的重量(48 + 60),然後(二百一十七分之一百○八)* 100 = 49.76作爲百分比

+0

確定您的查詢在哪裏,您遇到過哪些問題或結果不符合他們應有的方式?你有沒有嘗試過任何東西? – Dresden

+0

@Dresden我有這個查詢SELECT *,100 *重量/總和(重量)OVER(分區按名稱)AS每 從工人,但它正在計算大小twicw –

+1

您似乎誤認爲我們的SQL寫作服務,其中你發佈你的(非常容易混淆的)需求,並期望有人爲你創建一個SELECT語句。這不是這個網站的工作原理。你試圖自己寫一個查詢來獲得你想要的結果,以及**具體**是如何不按預期工作的?請[編輯]您的問題並添加該信息。當你在使用它時,爲你正在使用的特定DBMS添加一個標籤;功能和語法在不同的引擎之間有所不同。謝謝。 –

回答

1

我建議您需要首先彙總源記錄,然後計算百分比。因此,使用派生表,我建議您按名稱/大小對權重進行求和,然後在外部查詢中完成。

SELECT 
     name 
    , size 
    , 100 * Weight/SUM(Weight) OVER (PARTITION BY Name) AS Per 
FROM (
     SELECT 
      Name 
      , Size 
      , SUM(weight) AS weight 
     FROM worker 
     GROUP BY 
      name 
      , size 
) AS w 
+0

http://meta.stackexchange.com/q/196187/172661 –

+0

@ KenWhite:Crickey。沒有什麼可說的,代碼在字面上是不言自明的,但正如你堅持的那樣。 –