Ms-Access
查詢以確定特定記錄分組的百分比組成
我想分析下表中每個交易對手的行業市值:
-------------------------------------------------- | 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
列已被呼叫Val
(Value
是保留字並且使事情複雜化),您可以使用以下 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 中完成,分兩步:
- 創建一個名為 Query
TotalsPerCPTY
的列,該列TotalValPerCPTY
的SUM
s 為Val
GROUPed BY
CPTY
,如下圖所示:
- 通過使用列將表與視圖連接在一起來創建
ViePerCents
查詢,其中一個計算列計算:t``TotalsPerCPTY``CPTY``Val / TotalValPerCPTY * 100.0