【发布时间】:2020-04-10 16:51:52
【问题描述】:
试图弄清楚如何组合这两个查询,但正在努力解决。
1.
select ia.name, count(archived_i) from (
select * from incident i
where i.archived = true
) as archived_i
right join incident_action ia on archived_i.incident_action_id = ia.id
group by ia.name
order by ia.name;
产量
Detention 3
Expulsion 0
Warning 2
2.
select in_s.name, count(archived_i) from (
select * from incident i
where i.archived = true
) as archived_i
right join incident_severity as in_s on archived_i.incident_severity_id = in_s.id
group by in_s.name
order by in_s.name;
产量
High 0
Low 5
我想把这些结合起来形成一些东西
Detention High 0
Detention Low 3
Expulsion High 0
Expulsion Low 0
Warning High 0
Warning Low 2
什么是正确、高效的方法?
【问题讨论】:
-
一个
CROSS JOIN? -
@TheImpaler 具体是什么方式?我尝试交叉加入,但得到重复计数。我想将计数分布在所有 6 种组合中。
标签: sql postgresql join group-by left-join