如何在 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
我有一个 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