본문 바로가기
MySql

MySQL 테이블에서 두 번째로 높은 값 가져 오기

by 베이스 공부 2020. 10. 14.
반응형

이렇게 정의 된 직원 및 급여 테이블이 있습니다.

"name" (type: VARCHAR)
"salary" (type: INTEGER)

이 테이블에서 두 번째로 높은 급여를 얻으려면 어떤 쿼리를 사용할 수 있습니까?

 

해결 방법

 

여기에 관계를 설명하는 것이 있습니다.

Name    Salary
Jim       6
Foo       5
Bar       5
Steve     4

SELECT name, salary
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees WHERE salary < (SELECT MAX(salary) FROM employees))

Result --> Bar 5, Foo 5

수정 : 나는 Manoj의 두 번째 게시물을 가져 와서 수정하고 좀 더 인간이 읽을 수 있도록 만들었습니다. 나에게 n-1 은 직관적이지 않습니다. 그러나 내가 원하는 값을 사용하면 2 = 2nd, 3 = 3rd 등이 있습니다.

/* looking for 2nd highest salary -- notice the '=2' */
SELECT name,salary FROM employees
WHERE salary = (SELECT DISTINCT(salary) FROM employees as e1
WHERE (SELECT COUNT(DISTINCT(salary))=2 FROM employees as e2
WHERE e1.salary <= e2.salary)) ORDER BY name

Result --> Bar 5, Foo 5

 

참조 페이지 https://stackoverflow.com/questions/5360894

 

 

반응형

댓글