Sql 一对多关系:在多侧按列分组,并计算一侧的行数
我有两个表,A和B,一对多关系(B有A的外键)。现在我需要按B中的列进行分组,但要计算a中的行数(不同)。不使用COUNT(不同的A.Id)可以这样做吗Sql 一对多关系:在多侧按列分组,并计算一侧的行数,sql,postgresql,join,count,query-optimization,Sql,Postgresql,Join,Count,Query Optimization,我有两个表,A和B,一对多关系(B有A的外键)。现在我需要按B中的列进行分组,但要计算a中的行数(不同)。不使用COUNT(不同的A.Id)可以这样做吗 如果您想计算不同的值,那么count(distinct…就是一种方法。解决方案可能不会执行得更快 然而,让我建议简化查询:您不需要表a来获得所需的结果(特别是当您有外键约束时)。这就足够了: select column1, count(*) totalgroupcount, count(distinct a_id) from b group b
如果您想计算不同的值,那么
count(distinct…
就是一种方法。解决方案可能不会执行得更快
然而,让我建议简化查询:您不需要表a
来获得所需的结果(特别是当您有外键约束时)。这就足够了:
select column1, count(*) totalgroupcount, count(distinct a_id)
from b
group by column1
然后,您可以在b(column1,a\u id)
上尝试索引以提高性能
select column1, count(*) totalgroupcount, count(distinct a_id)
from b
group by column1