我有两个表:person_demographics,person_social_profile,由列person_id链接
p_d代表独特的人,p_s_p代表他们的社交网络帐户
p_d每个person_id只有一个条目,但p_s_p每个person_id会有很多行
我需要计算数据库中有多少人在德国生活,从“国家/地区”中提取。 p_d中的列,其中在facebook的p_s_p中也存在社交帐户,并且还存在twitter的社交帐户。
我到目前为止
select person_id from person_demographics pd
where pd.country like '%Germany%' or pd.country = 'DE'
为生活在德国的用户选择一组person_id,
select * from person_social_profiles psp where psp.person_id <is in previous results> and (psp.source = 'facebook' or psp.source = 'twitter')
然后我想到在person_id上做groupbykey并用&gt;对组进行计数。 1个条目,以获取生活在德国并拥有facebook和twitter的独特用户的数量,但在一个查询中将它们链接在一起时遇到问题。任何建议都将非常感谢,谢谢。
答案 0 :(得分:1)
我建议两个级别的聚合:
select count(*)
from (select pd.person_id
from person_demographics pd join
person_social_profiles psp
on psp.person_id = pd.pser_id
where (pd.country like '%Germany%' or pd.country = 'DE') and
psp.source in ('facebook', 'twitter')
group by pd.person_id
having count(distinct psp.source) = 2
) pd;