SQL:跨行计算,结果新建一行

SQL: Perform calculation across rows, creating a new row for the result

我用 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.

我已经考虑过连接之外的一些组合,window 函数用于计算百分比并使用 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;

我应该注意,如果您想将行实际添加到 table 中,您可以 insert 第二个查询的结果。