我需要编写一个执行以下操作的查询:
我有两张桌子:
SalaryRanges: id, beginRange, endRange
UserInfo: id, salary,...
我想要一个执行以下操作的查询:
给我一份SalaryRanges的列表,其中每个薪资范围满足特定范围的人数超过5人。
类似于:
SalaryRange ids:1,4,5,7有5人符合各自的薪资范围。
这可以在一个查询中执行吗?或者您是否需要将查询分解为不同的调用?
答案 0 :(得分:5)
这只是我的头脑,但我认为它会起作用
SELECT sr.id
FROM SalaryRanges AS sr
INNER JOIN UserInfo AS ui ON ui.Salary >= sr.beginRange AND ui.Salary <= sr.endRange
GROUP BY sr.id
HAVING count(ui.id) > 5
根据评论
,使用BETWEEN更新版本SELECT sr.id
FROM SalaryRanges AS sr
INNER JOIN UserInfo AS ui ON ui.Salary BETWEEN sr.beginRange AND sr.endRange
GROUP BY sr.id
HAVING count(ui.id) > 5
两者都应该有效