【发布时间】:2021-05-07 13:07:17
【问题描述】:
假设我有以下 PostgreSQL 表:
表:foo:
foo_id, baz, amount
--------------------
f1, b1, 500
f2, b1, 500
f3, b2, 1000
f4, b3, 100
表:bar:
bar_id, foo_id, amount
--------------------
br1, f1, 10
br2, f1, 10
br3, f1, 10
br4, f2, 10
br5, f2, 10
br6, f3, 750
br7, f3, 250
br8, f4, 90
br9, f4, 9
我的目标是总结foo.amount和bar.amount,找出区别,按foo.baz分组。
示例结果:
baz, sum_foo_amount, sum_bar_amount, diff_foo_bar
-------------------------------------------------
b1, 1000, 50, 950
b2, 1000, 1000, 0
b3, 100, 99, 1
我设法使用几个 CTE 获得了预期的结果——一个总结 foo,一个总结 bar——然后从 foo 中选择并分组。但我实际上正在为 bar 处理大约 1m 行,至少可以说它不是性能。
我有信心最终可以拼凑出一些东西,但我很想知道我可能看不到的模式或方法的见解。
【问题讨论】:
标签: postgresql join sum