sql - PostgreSQL加入多个表
问题描述
我有三张桌子user
,deposit
和withdraw
。
user
:
| id | name |
| -: | :------ |
| 1 | Lorem |
| 2 | Ipsum |
| 3 | Dolores |
deposit
:
user_id | amount
------: | -----:
1 | 1000
3 | 3000
withdraw
:
user_id | amount
------: | -----:
1 | 2000
2 | 3000
我的问题是如何加入表格,预期结果:
id | sum_deposit | sum_withdraw
-: | -----------: | ------------:
1 | 1000 | 2000
2 | null | 3000
3 | 3000 | null
解决方案
首先SUM()
是deposits
和withdraws
数据,然后是LEFT JOIN
:
SELECT
*
FROM users u
LEFT JOIN (
SELECT
user_id,
SUM(amount)
FROM deposit
GROUP BY user_id
) d ON u.id = d.user_id
LEFT JOIN (
SELECT
user_id,
SUM(amount)
FROM withdraw
GROUP BY user_id
) w ON u.id = w.user_id
推荐阅读
- javascript - 如何使用 JS 将 GMT 日期时间转换为 GMT Unix TimeStamp?
- python - 为什么即使 PYTHONHASHSEED=0,Python 集的顺序也不确定?
- apache-kafka - 在 Kafka 流作业中进行同步数据库查询或 restful 调用是一个好习惯吗?
- java - Android - RFID 的 EPC 十六进制库充满了空值
- android - 无法验证 dex 文件乱序 annotation_element name_idx
- android - 在 Scroll Flutter 上隐藏 Appbar?
- tensorflow - 张量流中.pb和.pbtxt之间的区别?
- javascript - 当您为引导选择键入焦点时如何激活正常搜索?
- laravel - 在 Laravel PHPUnit 测试中使用内存中的 SQLite
- php - 接收 webhook PHP "&contact[uid]="