我正在努力解决这个问题:
确定每个公司的规模类别(小型、中型、大型) 首先确定他们拥有的职位发布数量。使用子查询 计算每个公司的职位发布总数。一家公司 如果职位发布少于 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
);
我正在尝试返回公司名称及其尺寸类别。
您收到语法错误,因为您不能像这样在“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。