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

时间:2020-06-18 09:34:47

标签: sql ms-access ms-access-2016

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

这是单个EVENT_ID结果的示例:

enter image description here

有人可以建议如何做到吗?

谢谢

2 个答案:

答案 0 :(得分:1)

我认为您将需要使用子查询来获取每个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

这将产生以下输出: enter image description here 您可能需要根据确切定义要计算的总数的方式来更改子查询的WHERE部分中使用的字段。

此致

答案 1 :(得分:1)

为此,我倾向于使用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

我经常喜欢相关的子查询。但是在这种情况下,它可能会执行不必​​要的工作,因为它会为每个组多次进行聚合。