2014-09-13 5 views
0
SELECT * 
FROM Employees Emp1 
WHERE (n) = (SELECT COUNT(DISTINCT(Emp2.Salary)) 
       FROM Employees Emp2 
       WHERE Emp2.Salary >= Emp1.Salary) 
+1

SQL의 "맛"은 무엇입니까? 나는 그런 것을 본 적이 없다 ...이 오라클인가? MySQL은? PostgreSQL? SQLite? 다른 것? –

+1

이것은 mysql 쿼리 테이블에서 n 번째 급여를 찾을 – vijay

+1

내 재미있는 추측 : (n) 테이블의 열 – Nabin

답변

1

가장 중요한 것은 하위 쿼리라고 생각합니다. 현재 Emp1.Salary보다 크거나 같은 고유 급여의 수를 리턴합니다. 반환 된이 값은 직원의 급여 순위와 같습니다.

세 번째로 큰 급여를 가진 직원이 10000 인 것으로 가정합니다. 하위 쿼리는 귀하보다 큰 급여의 수를 계산합니다 (2). 하나의 숫자는 2+1=3입니다. 플러스 하나는 직원을 포함하여 귀하의 자살을 포함하여 월급이 10000이됩니다. 이것은 WHERE 조항에 사용 된 >=입니다.

그렇다고해서 전체 쿼리가 직원의 급여 순위에 따라 직원을 선택한다는 것이 좋습니다.