子查询有很多列

问题描述 投票:0回答:1

我正在努力解决这个问题:

确定每个公司的规模类别(小型、中型、大型) 首先确定他们拥有的职位发布数量。使用子查询 计算每个公司的职位发布总数。一家公司 如果职位发布少于 10 个,则被视为“小型” 如果作业数量为 10-50,则为“中”;如果作业数量超过 50,则为“大”。 实施子查询以聚合之前每个公司的职位数 根据大小对它们进行分类-

我的查询如下,但它返回子查询有太多列

SELECT 
    company_id,
    name AS company_name
FROM company_dim 
WHERE company_id IN (
SELECT 
    COUNT(*),
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
);

我正在尝试返回公司名称及其尺寸类别。

postgresql subquery case
1个回答
0
投票

您收到语法错误,因为您不能像这样在“IN”子句中使用“CASE”语句。

试试这个:

SELECT
    c.company_id,
    c.name AS company_name,
    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
) AS size_info ON c.company_id = size_info.company_id;

首先根据“job_postings_fact”表中的职位发布数量计算每个公司的类别大小,然后将结果与“company_dim”表连接以接收公司名称和ID。

© www.soinside.com 2019 - 2024. All rights reserved.