You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LEFT JOIN关联家庭表与公民表,生成含成员总数及户主信息的指定输出结果求助

解决方案:使用LEFT JOIN实现家庭信息统计

要实现你需要的输出,我们可以通过LEFT JOIN关联households和citizens表,结合分组统计与条件聚合来获取目标字段。以下是完整的SQL语句:

SELECT 
    h.Serial_no,
    h.Address,
    COUNT(c.Serial_id) AS Total_count,
    MAX(CASE WHEN c.Role = 'Head' THEN c.Fullname END) AS Head
FROM households h
LEFT JOIN citizens c ON h.Serial_no = c.household_id
GROUP BY h.Serial_no, h.Address
ORDER BY h.Serial_no;

代码细节解释:

  1. LEFT JOIN关联逻辑:以households作为主表做左连接,确保哪怕没有对应家庭成员的家庭(比如sn3)也会被保留在结果集中,不会被过滤掉。
  2. 统计家庭成员总数:COUNT(c.Serial_id)会自动忽略LEFT JOIN产生的null值,所以没有成员的家庭会返回0,有成员的家庭则统计对应人数。
  3. 提取户主姓名:用MAX(CASE WHEN c.Role = 'Head' THEN c.Fullname END)做条件聚合——每个家庭只会有一个户主,MAX(或MIN)能精准提取出该家庭的户主名,无户主的家庭则返回null。
  4. 分组与排序:按households的编号和地址分组,保证每个家庭在结果中只占一行;最后按编号排序让结果更规整。

执行这段SQL后,就能得到你预期的输出:

AddressTotal_countHead
New York3John
Maryland1Mike
France0null

内容的提问来源于stack exchange,提问作者Nelson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 14:04:08