在 Access 2016 中按组计算总数的百分比

Calculate Percentage of Total by Group in Access 2016

我有一个查询 returns 为多个 EVENT_IDs 结果。我想计算每个 SELECTION-ID 的每个 EVENT_ID 的总 PPWAP 的百分比 PPWAP。

这是单个 EVENT_ID:

的结果示例

谁能建议如何做到这一点?

谢谢

我认为您需要使用子查询来获取每个 SELECTION 的总数,然后您可以使用它来计算每行的百分比:

SELECT 
    E.EVENT_ID, 
    E.EVENT_NAME, 
    E.EVENT_DATE, 
    E.SELECTION_NAME, 
    E.PPWAP,
    (SELECT SUM(E1.PPWAP) FROM tblEvent AS E1 WHERE E1.EVENT_ID=E.EVENT_ID AND E1.EVENT_DATE=E.EVENT_DATE) AS TOTAL_PPWAP,
    E.PPWAP/TOTAL_PPWAP*100 AS PCT_PPWAP
FROM tblEvent AS E

这会产生以下输出: 您可能需要更改子查询 WHERE 部分中使用的字段,具体取决于您如何定义要计算的总数。

此致,

我倾向于使用 GROUP BYJOIN。你的问题有点不清楚。如果要按事件比例:

select e.*, PPWAP / total_PPWAP as ratio
from tblEvent as e inner join
     (select event_id, sum(PPWAP) as total_PPWAP
      from tblEvent 
      group by event_id
     ) as ee
     on ee.event_id = e.event_id;

如果您真的希望通过某些看不见的列(例如 selection_id)来获取它,那么您可以将其用于 GROUP BYJOIN

我经常喜欢关联子查询。但在这种情况下,它可能会做比必要更多的工作,因为它会多次对每个组进行聚合。