繁体   English   中英

加入两个 SQL SELECT 语句,在不同的列中有 output

[英]Join two SQL SELECT statements and have output in different columns

我有一个数据库,其中包含特定工作类型的薪水值,我正在尝试获取一个 output 来分隔工作、给出薪水信息的工作数量,以及高于特定薪水限制的工作数量。

SELECT * FROM
(SELECT job_list_name, COUNT(job_list_name) FROM Jobs_Salaries 
WHERE salary_range_low = "100K+" OR salary_range_low = "125K+" 
OR salary_range_low = "150K" OR salary_range_low = "200K+") AS t1
INNER JOIN
(SELECT job_list_name, COUNT(job_list_name) FROM Jobs_Salaries 
WHERE indeed_salary != "None") AS t2
ON t1.job_list_name = t2.job_list_name
GROUP BY t1.job_list_name
ORDER BY COUNT(t2.job_list_name) DESC;

这是我目前拥有的,但我的 output 是这样的:

MACHINE LEARNING ENGINEER|178
DATA ENGINEER|148
DATA SCIENTIST|122
DATA ANALYST|15
MACHINE LEARNING ENGINEER|241
DATA ANALYST|224
DATA ENGINEER|219
DATA SCIENTIST|187
DATA ANALYST|463|DATA ANALYST|871

高于最后一个数据分析师值的值是每个语句的单独输出,但我不确定为什么最后一个值在那里。 我正在尝试实现这样的 output:

Job Type                  # of Jobs with Salary Values   # of Jobs above $100k
DATA ENGINEER                        400                          150
DATA ANALYST                         300                          100
DATA SCIENTIST                       200                          125
MACHINE LEARNING ENGINEER            100                          100

值由每个 SELECT 语句的计数分隔,并按职位分组。 任何帮助表示赞赏!

通过将WHERE条件移动到聚合的SELECT列来考虑条件聚合:

SELECT job_list_name, 
       SUM(indeed_salary != 'None') AS [# of Jobs with Salary Values],
       SUM(salary_range_low IN ('100K+', '125K+', '150K', '200K+')) AS [# of Jobs above $100k]
FROM Jobs_Salaries
GROUP BY job_list_name
ORDER BY COUNT(t2.job_list_name) DESC;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM