我有两个表:
account_id+amountaccount_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 次 |
| 最近记录: |