【发布时间】:2021-12-14 00:31:37
【问题描述】:
我有一张桌子 A:
entity_id name
------------------
1 Test1
2 Test2
3 Test3
4 Test4
5 Test5
6 Test6
我有一张桌子 B:
entity_id value1 value2
-----------------------------
1 10 20
1 15 30
2 10 25
1 9 45
3 null 1
2 45 50
3 20 null
我需要编写一个查询来从表 A 中选择 entity_id 和 name,并计算表 B 中列 value1 和 value2 的 entity_id 的总出现次数,然后计算这些列的总数(null 不计算在内) .
所以我的输出表是:
entity_id name value1_count value2_count total_count
----------------------------------------------------------------------
1 Test1 3 3 6
2 Test2 1 2 3
3 Test3 1 1 2
4 Test4 0 0 0
5 Test5 0 0 0
6 Test6 0 0 0
我无法将 value1 的计数和 value2 的计数相加,并将该值输出到每个唯一 entity_it 的 total_count 中。
这是我目前的查询:
SELECT DISTINCT a.entity_id, a.name
, count(b.value1) AS value1_count, count(b.value2) AS value2_count, sum(2) AS total_count
FROM a
LEFT JOIN b ON a.entity_id = b.entity_id
GROUP BY a.entity_id, a.name
我知道sum(2) as total_count 不正确,没有得到我想要的。
【问题讨论】:
-
value1_count实体 2 应该是 2,而不是 1 我假设?
标签: sql postgresql count left-join