计算行级总和的百分比

Calculate percent of sum on row level

我有疑问:

select my_year,my_month, L2, PAR1, PAR2, PAR3, Value from table1

产生以下table:

现在我想计算每一行的百分比。首先,我需要添加值 (20+30+40+50+60+70+80),然后将每一行除以总和。 结果应该是:

我可以一次性完成吗select?或者我应该在第二个查询中计算总和然后进行连接?

您可以使用 window 函数。对于您提供的数据:

select my_year, my_month, L2, PAR1, PAR2, PAR3, Value,
       Value * 100.0 / SUM(Value) OVER () as percent
from table1;

这可以在单个查询中实现,如下所示:

select
    my_year,
    my_month,
    L2,
    PAR1,
    PAR2,
    PAR3,
    Value,
    (100.0 * Value) / SUM(Value) OVER ()
from
    table1