我有两张桌子:
表A
CrimeType | CrimeSubType | Neighborhood | Year |
---|---|---|---|
1 | 1 | Jeff Park | 2024 |
2 | 2 | Cong Park | 2023 |
2 | 2 | Cong Park | 2024 |
2 | 2 | Jeff Park | 2024 |
3 | 1 | Jeff Park | 2024 |
3 | 2 | Jeff Park | 2023 |
3 | 1 | Jeff Park | 2023 |
然后我有了第二个表,它将犯罪类型定义为人类可读的类别
表B
CrimeType | CrimeSubType | Category |
---|---|---|
1 | 1 | VIOLENT CRIME |
1 | 2 | VIOLENT CRIME |
2 | 1 | VIOLENT CRIME |
2 | 2 | PROPERTY CRIME |
3 | 1 | PROPERTY CRIME |
3 | 2 | DRUG CRIME |
我希望我的postgres的输出(如果可能)显示如下结果(假设年份为2024年)
Neighborhood | Category | Counts |
---|---|---|
Jeff Park | VIOLENT CRIME | 0 |
Cong Park | VIOLENT CRIME | 1 |
Jeff Park | PROPERTY CRIME | 3 |
Cong Park | PROPERTY CRIME | 2 |
Jeff Park | DRUG CRIME | 1 |
Cong Park | DRUG CRIME | 0 |
我能够让它看起来像上面使用类似以下的东西:
SELECT
Neighborhood,
Category,
COUNT(Neighborhood)
from A
INNER JOIN B
ON (b.CrimeType =
a.crimeType
AND B.CrimeSubType = b.CrimeSubType
AND a.year = 2024
GROUP BY
Neighborhood,
Category
我查找了一些答案,它说要将内部联接更改为左联接或右联接.(我相信在我的情况下,这将是一个正确的加入?)然而,我觉得我的情况太复杂了,我错过了一些东西.
SELECT
Neighborhood,
Category,
COUNT(Neighborhood)
from A
LEFT JOIN B
ON (b.CrimeType = a.crimeType
AND B.CrimeSubType = b.CrimeSubType
AND a.year = 2024
GROUP BY
Neighborhood,
Category
仍然不起作用,它将显示一些空值,但不是我想要的方式,我遗漏了什么?