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