在 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 BY
和 JOIN
。你的问题有点不清楚。如果要按事件比例:
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 BY
和 JOIN
。
我经常喜欢关联子查询。但在这种情况下,它可能会做比必要更多的工作,因为它会多次对每个组进行聚合。
我有一个查询 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 BY
和 JOIN
。你的问题有点不清楚。如果要按事件比例:
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 BY
和 JOIN
。
我经常喜欢关联子查询。但在这种情况下,它可能会做比必要更多的工作,因为它会多次对每个组进行聚合。