好吧,我在我的数据库中得到了表Workers
。共有4列id
,name
,salary
和department
。我需要列出一些部门清单,其中工人的工资超过最高工资价值的90%,并且这些工资的工人数超过部门工人数的15%。
起初我做了这样的查询,显示所有具有大工资的工人的行
SELECT *
FROM `Workers`
WHERE id IN (
SELECT `id`
FROM `Workers`
WHERE `salary` > 0.9 * (SELECT MAX( `salary` )
FROM `Workers`))
也许我问的确很傻但是我卡住了,我真的不知道如何做下一步工作,那些薪水很高的工人但在他们的部门工作不到15%就得到这样的工资。
答案 0 :(得分:2)
这很难看,但应该有效:
SELECT department, COUNT(*)
FROM `Workers` w
WHERE id IN
(SELECT `id` FROM `Workers`
WHERE `salary` > 0.9 * (SELECT MAX( `salary` ) FROM `Workers`))
GROUP BY department
HAVING COUNT(*) > 0.15 *
(SELECT COUNT(*) FROM `Workers`
WHERE department = w.department)