SQL:跨行执行计算,为结果创建新行



我对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第二个查询的结果。

相关内容

  • 没有找到相关文章

最新更新