Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 一对多关系:在多侧按列分组,并计算一侧的行数_Sql_Postgresql_Join_Count_Query Optimization - Fatal编程技术网

Sql 一对多关系:在多侧按列分组,并计算一侧的行数

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

我有两个表,A和B,一对多关系(B有A的外键)。现在我需要按B中的列进行分组,但要计算a中的行数(不同)。不使用COUNT(不同的A.Id)可以这样做吗


如果您想计算不同的值,那么
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