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

PostgreSQL多表统计问题:基于idmaster统计data1/data2的ID出现次数

正确的PostgreSQL统计SQL写法

要实现统计idmaster中每个ID在data1和data2的出现次数,同时保留无数据的ID,你可以通过左连接分组统计子查询的方式实现,避免直接关联导致的笛卡尔积问题:

SELECT 
    im.id,
    COALESCE(d1.data1_count, 0) AS data1_count,
    COALESCE(d2.data2_count, 0) AS data2_count
FROM idmaster im
LEFT JOIN (
    -- 统计data1中各ID的出现次数
    SELECT id, COUNT(*) AS data1_count
    FROM data1
    GROUP BY id
) d1 ON im.id = d1.id
LEFT JOIN (
    -- 统计data2中各ID的出现次数
    SELECT id, COUNT(*) AS data2_count
    FROM data2
    GROUP BY id
) d2 ON im.id = d2.id
ORDER BY im.id;

关键说明:

  • 子查询d1和d2分别对data1、data2按ID分组统计,避免直接关联两张数据表格产生的重复计数问题
  • LEFT JOIN保证idmaster中的所有ID都会被返回,无论在data1或data2中是否存在匹配记录
  • COALESCE函数将无匹配时的NULL值转换为0,统一输出格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 02:50:33