如何在SQL中减去组之间的平均值?

时间:2021-01-10 00:19:42

标签: sql oracle group-by partition

我有一张像:

<头>
AVG_AMOUNT WAS_MEMBER
200.00 真的 2018
100.00 错误 2018
20.00 真的 2019
300.00 错误 2019
400.00 真的 2020
10.00 错误 2020

我想要一张像:

<头>
DIFF_AVG_AMOUNT
100.00 2018
-280.00 2019
390.00 2020

我怎样才能根据每年的会员资格获得不同的收入?可能使用了一个分区,但不确定如何使用与一个分区的差异。

1 个答案:

答案 0 :(得分:2)

您可以使用包含 SUM() 的条件聚合,例如

SELECT SUM(CASE WHEN was_member='True'  THEN   avg_amount 
                WHEN was_member='False' THEN - avg_amount END) AS diff_avg_amount, 
       year
  FROM tab
 GROUP BY year
 ORDER BY year