许多 SELECT DISTINCT 查询的交集
Intersection of many SELECT DISTINCT queries
我有一个包含 company
和 location
列的 table recruiter
。我想找到列表中每家公司至少有一名招聘人员的所有不同地点。
我可以找到给定公司的招聘人员工作的所有地点
SELECT DISTINCT location
FROM recruiter
WHERE company='Google'
但我想为一堆不同的公司做这个并得到它们的交集。
我发现之前的一个问题似乎问了类似的问题:。
但是,该问题专门询问了 two SELECT
查询结果的交集,答案似乎并没有概括为任意数字。
具有示例数据和预期结果的可重现示例在这里会很有帮助。我猜你想要像
这样的东西
select location, count(distinct company)
from recruiter
where company in ('Google', 'Microsoft', 'Amazon')
group by location
having count(distinct company) = 3;
这将 return 每 location
一行,其中三个公司中的每一个至少有一行。当然,如果您将其他公司添加到列表中,则需要调整 having
子句中的文字。
当有很多公司时,使用多个查询会很困难,
你可能需要这样的东西
SELECT LOCATION
FROM RECRUITER
WHERE COMPANY IN (/list of companies/)
GROUP BY LOCATION
HAVING COUNT(DISTINCT COMPANY) = /count of companies/
此查询将提供至少有一名来自公司的招聘人员的地点名称
我有一个包含 company
和 location
列的 table recruiter
。我想找到列表中每家公司至少有一名招聘人员的所有不同地点。
我可以找到给定公司的招聘人员工作的所有地点
SELECT DISTINCT location
FROM recruiter
WHERE company='Google'
但我想为一堆不同的公司做这个并得到它们的交集。
我发现之前的一个问题似乎问了类似的问题:SELECT
查询结果的交集,答案似乎并没有概括为任意数字。
具有示例数据和预期结果的可重现示例在这里会很有帮助。我猜你想要像
这样的东西select location, count(distinct company)
from recruiter
where company in ('Google', 'Microsoft', 'Amazon')
group by location
having count(distinct company) = 3;
这将 return 每 location
一行,其中三个公司中的每一个至少有一行。当然,如果您将其他公司添加到列表中,则需要调整 having
子句中的文字。
当有很多公司时,使用多个查询会很困难, 你可能需要这样的东西
SELECT LOCATION
FROM RECRUITER
WHERE COMPANY IN (/list of companies/)
GROUP BY LOCATION
HAVING COUNT(DISTINCT COMPANY) = /count of companies/
此查询将提供至少有一名来自公司的招聘人员的地点名称