create table kids(
      familyID bigint references a table with families;
      personID bigint references something that contains records with people/kids
)


对于一个给定的家庭,即兄弟姐妹,可能会有多个孩子。这个想法是要计算有多少家庭有兄弟姐妹。

此查询:

select count(familyID) from kids group by familyID;


将产生一个结果集,显示每个家庭的孩子总数。因此,大多数家庭会有1个孩子,有2个孩子,等等。

现在的想法是进一步计算有多少个家庭生一个孩子,有多少个2个孩子,有多少个3个孩子,因此结果集应如下所示:

kids      count(familyID)
1         44
2         10
3         2
4         1


并且如果您将count(familyID)相加:db中的44 + 11 + 2 + 1 = total_number_of_families。

我试图通过子查询到达那里,但似乎无法掌握这个概念。有人可以解释吗?

最佳答案

您可以使用临时表

select kids , count(*) from
(
  select familyID,  count(*) kids
  from kids
   group by familyID ) as t
group by kids

10-06 10:17