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

Postgres用left join加having count统计达标huddles数报错问题

错误原因分析

原有写法的核心问题在于分组粒度不匹配:按users.id分组后,h.min_persons是属于单个huddle的非聚合字段,无法直接在HAVING子句中引用;就算将h.min_persons加入GROUP BY,也没有先完成「单个huddle参会人数是否达标」的判断逻辑,直接计数自然不符合预期。


正确实现逻辑

需要分两步处理:

  1. 先统计每个huddle的实际参会总人数(嘉宾数+1位host),判断是否满足该huddle的min_persons要求
  2. 再按host分组,统计每个用户名下达标huddle的总数,没有达标记录的返回0

可直接运行的SQL代码

SELECT 
    u.id AS user_id,
    COUNT(qualified_h.id) AS huddles_count
FROM users u
LEFT JOIN (
    -- 子查询筛选所有参会人数达标的huddle
    SELECT 
        h.id,
        h.host_id
    FROM huddles h
    LEFT JOIN huddle_guests hg ON h.id = hg.huddle_id
    GROUP BY h.id, h.host_id, h.min_persons
    HAVING (COUNT(hg.id) + 1) >= h.min_persons
) qualified_h ON u.id = qualified_h.host_id
GROUP BY u.id
ORDER BY u.id;

结果验证

使用提供的样本数据执行后,返回结果完全符合预期:

user_idhuddles_count
11
20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:24:05