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

How to subtract mean between groups in SQL?

我有一个 table 喜欢:

AVG_AMOUNT WAS_MEMBER YEAR
200.00 True 2018
100.00 False 2018
20.00 True 2019
300.00 False 2019
400.00 True 2020
10.00 False 2020

我想要一个 table 像:

DIFF_AVG_AMOUNT YEAR
100.00 2018
-280.00 2019
390.00 2020

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

您可以使用包含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