Ms-Access

查詢以確定特定記錄分組的百分比組成

  • January 28, 2017

我想分析下表中每個交易對手的行業市值:

--------------------------------------------------
| CPTY | Industry      | Value   |
--------------------------------------------------
| a    | food          | 10      |
| a    | water         | 5       |
| c    | wood          | 20      |
| c    | food          | 20      |
| d    | wood          | 10      |

我想要每個 CPTY 欄位與其子行業相關的百分比細分。

我期望的輸出查詢範例應如下所示:


| CPTY | Industry      | Value   | %IndustryPerCpty
--------------------------------------------------
| a    | food          | 10      | 66.66
| a    | water         | 5       | 33.33
| c    | wood          | 20      | 50.0
| c    | food          | 20      | 50.0
| d    | wood          | 10      | 100.00

例如對於CPTY a,相應的部門是食品CPTY a的總值為10+5=15。因此,食品佔該 CPTY 總市值的 10/15*100% = 66.66%。同樣,佔該 CPTY 總市值的 5/15 *100% = 33.33%。

我最初的查詢嘗試遵循此處接受的答案中採用的結構。但是,這給了我每行的百分比組成,而不是每個 CPTY 的行業。

注意:我不希望 sum(%IndustryPerCpty) 列等於 100%,原因我希望很清楚。

任何人都可以在 Ms Access 中建議一個查詢結構來生成我想要的帶有 %IndustryPerCpty 欄位的表嗎?

假設您的表被呼叫[t],並且該Value列已被呼叫ValValue是保留字並且使事情複雜化),您可以使用以下 SQL 定義創建視圖(查詢):

SELECT 
   t0.CPTY, t0.Industry, t0.Val * 100.0 / 
   (SELECT sum(t1.Val) FROM t AS t1    
     WHERE t1.CPTY = t0.CPTY) AS PerCentIndustryPerCpty
FROM 
   t AS t0;

您可以使用“SQL 視圖”而不是視圖(查詢)的圖形設計器來實現。

你得到這個結果:

觀看百分比


如果您對 SQL 視圖不滿意,也可以在 GUI 中完成,分兩步:

  1. 創建一個名為 QueryTotalsPerCPTY的列,該列TotalValPerCPTYSUMs 為Val GROUPed BY CPTY,如下圖所示:

TotalsPerCPTY 查詢

  1. 通過使用列將表與視圖連接在一起來創建ViePerCents查詢,其中一個計算列計算:t``TotalsPerCPTY``CPTY``Val / TotalValPerCPTY * 100.0

最終查詢

引用自:https://dba.stackexchange.com/questions/162417