我倾向于使用 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 . 我经常喜欢相关子查询。但在这种情况下,它可能会做更多的工作,因为它会多次为每个组进行聚合。
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
2条答案
按热度按时间zysjyyx41#
我倾向于使用
GROUP BY
以及JOIN
为了这个。你的问题有点不清楚。如果要按事件列出比例:如果你真的想通过一些看不见的栏目,比如
selection_id
,那么你就用它来GROUP BY
以及JOIN
.我经常喜欢相关子查询。但在这种情况下,它可能会做更多的工作,因为它会多次为每个组进行聚合。
k5hmc34c2#
我认为您需要使用一个子查询来获取每个选择的总数,然后您可以使用它来计算每行的百分比:
这将产生以下输出:
您可能需要更改
WHERE
子查询的一部分,具体取决于如何定义要计算的总计。当做,