如何制作正确的子查询?

时间:2012-10-30 19:48:59

标签: mysql sql subquery

好吧,我在我的数据库中得到了表Workers。共有4列idnamesalarydepartment。我需要列出一些部门清单,其中工人的工资超过最高工资价值的90%,并且这些工资的工人数超过部门工人数的15%。

起初我做了这样的查询,显示所有具有大工资的工人的行

 SELECT * 
 FROM   `Workers` 
 WHERE id IN (
    SELECT `id`  
    FROM   `Workers` 
    WHERE  `salary` > 0.9 * (SELECT MAX( `salary` )
                             FROM  `Workers`)) 

也许我问的确很傻但是我卡住了,我真的不知道如何做下一步工作,那些薪水很高的工人但在他们的部门工作不到15%就得到这样的工资。

1 个答案:

答案 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)