我有两个表:
account_id
+amount
account_id
+amount
我想计算每个 的余额account
,可能在VIEW
.
我可以有两个查询:
SELECT account_id, SUM(amount) FROM prizes GROUP BY account_id
Run Code Online (Sandbox Code Playgroud)
这给了我每个帐户的总奖金,以及:
SELECT account_id, SUM(amount) FROM withdrawals GROUP BY account_id
Run Code Online (Sandbox Code Playgroud)
这给了我这些账户的所有提款。
现在,我想减去它们以返回我帐户的余额。创建这样的视图的最有效方法是什么?
作为完全连接的替代方法,您可以使用UNION ALL
将两个聚合集组合在一起,只有该withdrawals
集将包含在否定结果中。然后,您将使用组合集作为派生表并account_id
再次汇总每个金额:
SELECT
account_id,
SUM(amount) AS balance
FROM
(
SELECT
account_id,
SUM(amount) AS amount
FROM
prizes
GROUP BY
account_id
UNION ALL
SELECT
account_id,
-SUM(amount) AS amount
FROM
withdrawals
GROUP BY
account_id
) AS derived
GROUP BY
account_id
;
Run Code Online (Sandbox Code Playgroud)
我不确定这个查询与完整连接解决方案相比如何,但对我来说它看起来足够简单,可以作为一个很好的起点。
归档时间: |
|
查看次数: |
5498 次 |
最近记录: |