krz*_*kov 1 sql group-by sql-function querydsl
表:
玩家
player_no | transaction_id
----------------------------
1 | 11
2 | 22
3 | (null)
1 | 33
Run Code Online (Sandbox Code Playgroud)
交易
id | value |
-----------------------
11 | 5
22 | 10
33 | 2
Run Code Online (Sandbox Code Playgroud)
我的目标是获取所有数据,维护所有玩家,即使null是以下查询中的值:
SELECT p.player_no, COUNT(p.player_no), SUM(t.value) FROM Players p
INNER JOIN Transactions t ON p.transaction_id = t.id
GROUP BY p.player_no
Run Code Online (Sandbox Code Playgroud)
然而,结果省略了空值,例如:
player_no | count | sum
------------------------
1 | 2 | 7
2 | 1 | 10
Run Code Online (Sandbox Code Playgroud)
我想提到的是空值:
player_no | count | sum
------------------------
1 | 2 | 7
2 | 1 | 10
3 | 0 | 0
Run Code Online (Sandbox Code Playgroud)
我在这里想念什么?实际上我使用QueryDSL,但是将示例转换为纯SQL,因为它的行为方式相同.
使用LEFT JOIN和coalesce功能
SELECT p.player_no, COUNT(p.player_no), coalesce(SUM(t.value),0)
FROM Players p
LEFT JOIN Transactions t ON p.transaction_id = t.id
GROUP BY p.player_no
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
721 次 |
| 最近记录: |