2012-10-30 3 views
0

음, 내 테이블에 Workers 테이블이 있습니다. 4 열 id, name, salarydepartment이 있습니다. 연봉이 최대 급여의 90 % 이상이고 그 급여를받는 근로자의 수가 부서의 근로자 수의 15 %를 넘는 근로자의 수를 표시해야합니다.오른쪽 하위 쿼리를 만드는 방법은 무엇입니까?

는 처음에 나는 어쩌면 내가 정말 바보 같은 일을 물어 큰 급여

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

이 노동자와 함께 모든 행을 표시 같은 쿼리를 만든하지만 난 갇혀 그리고 난 던져 다음 단계를 만드는 방법을 정말 모르는 그것으로부터 큰 봉급을 가지고 있지만 부서에있는 근로자들은 15 % 미만의 사람들에게 이런 급료를 받는다.

+0

어떤 SQL 구현을? 예를 들어, MySQL과 Oracle은 매우 다른 기능과 구문을 가지고 있습니다. – MatBailie

+0

글쎄 그것은 MySQL이다 – DanilGholtsman

답변

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) 
+0

아, 네, 작동합니다! 고맙습니다! – DanilGholtsman

관련 문제