我对GROUP BY的不同值进行了一些汇总和计数,得到了以下结果:
DATE | Parameter | Count
2000 | Desired | 10
2000 | Reality | 9
2001 | Desired | 17
2001 | Reality | 17
etc.
现在,我想计算每年的实际/期望百分比,并将结果存储在新行中,参数为percentage。就像:
DATE | Parameter | Count
2000 | Desired | 10
2000 | Reality | 9
2000 | Percentage| 90
2001 | Desired | 17
2001 | Reality | 17
2001 | Percentage| 100
etc.
我已经考虑过一些连接外的组合,计算百分比的窗口函数,以及用CTE和UNION ALL创建新行,但我被卡住了,需要一些灵感。
非常感谢!
一种方法使用条件聚合:
select date, parameter, count
from t
union all
select date, 'Percentage',
( sum(case when parameter = 'Reality' then count end) /
sum(case when parameter = 'Desired' then count end)
)
from t
group by date;
我应该注意,如果您想实际将行添加到表中,那么可以insert
第二个查询的结果。