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

解决SQL子查询列过多错误:实现公司招聘规模分类查询

问题分析与解决

错误原因

你写的SQL报错Subquery has too many columns,核心原因是IN子句要求内部子查询只能返回单一列,但你的子查询同时返回了COUNT(*)和size_category两列,违反了这个规则。另外,你的写法逻辑完全偏离需求,根本没法把规模类别带到最终结果里。

正确SQL写法

要实现“统计每家公司职位数并划分规模类别,返回公司名称和对应类别”的需求,应该把聚合统计的子查询作为临时表,和company_dim做关联查询,而不是用IN:

SELECT 
    c.name AS company_name,
    j.size_category
FROM company_dim c
JOIN (
    -- 子查询:统计每家公司职位数并生成规模类别
    SELECT 
        company_id,
        CASE 
            WHEN COUNT(*) < 10 THEN 'Small'
            WHEN COUNT(*) BETWEEN 10 AND 50 THEN 'Medium'
            ELSE 'Large'
        END AS size_category
    FROM job_postings_fact
    GROUP BY company_id
) j ON c.company_id = j.company_id;

扩展:包含无职位的公司

如果需要把那些没有发布任何职位的公司也包含进来(默认划为Small类别),可以用LEFT JOIN配合COALESCE处理空值:

SELECT 
    c.name AS company_name,
    COALESCE(j.size_category, 'Small') AS size_category
FROM company_dim c
LEFT JOIN (
    SELECT 
        company_id,
        CASE 
            WHEN COUNT(*) < 10 THEN 'Small'
            WHEN COUNT(*) BETWEEN 10 AND 50 THEN 'Medium'
            ELSE 'Large'
        END AS size_category
    FROM job_postings_fact
    GROUP BY company_id
) j ON c.company_id = j.company_id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:40:55