직원 테이블에서 두 번째로 높은 급여를받을 수있는 사전 정의 된 함수 나 메소드가 있습니까?두 번째로 높은 급여를 가진 직원을 찾는 방법은 무엇입니까?
4
A
답변
0
이 시도 :
SELECT * FROM employee emp WHERE 2=(SELECT COUNT(*) FROM employee WHERE
salary >= emp.salary);
2
오라클에서 당신은 (N에 행 M) 페이지 된 결과를 반환 이곳과 같은 쿼리를 사용합니다 :
SELECT NAME, salary
FROM (SELECT NAME, salary, ROWNUM r
FROM (SELECT NAME, salary
FROM employee
ORDER BY salary DESC
)
WHERE ROWNUM <= :N
)
WHERE r >= :M
을 다른 방법으로, 분석을 사용할 수 있습니다 :
SELECT NAME, salary
FROM (SELECT NAME, salary, row_number() over (ORDER BY salary DESC) n
FROM employee)
WHERE n BETWEEN :M AND :N
5
오라클의 분석 기능을 사용하는 방법입니다. 특정 시나리오는 another thread에서 제공 한 솔루션의 변형입니다. 추가 정보를 선택하려면, 그러나
SQL> select * from
2 (select sal
3 , rank() over (order by sal desc) as rnk
4 from
5 (select distinct sal
6 from emp)
7 )
8 where rnk = 2
9/
SAL RNK
---------- ----------
3000 2
SQL>
: 당신은 그냥 다음 DENSE_RANK(), RANK()와 ROW_NUMBER (중 하나를 두 번째로 높은 연봉을 선택에 관심이 있다면
)는 트릭을 할 것입니다 , 두 번째로 높은 급여를 가진 직원의 이름과 같이, 선택한 기능이 결과에 영향을 미칩니다. 하나를 선택하는 주된 이유는 동점이있을 때 일어나는 일입니다.
ROW_NUMBER()를 사용하면 급여로 주문 된 두 번째 직원이 반환됩니다. 가장 높은 급여를받는 직원이 두 명인 경우 어떻게해야합니까? 두 번째로 높은 급여를받는 직원이 두 명이라면 어떻게해야합니까? 당신은 RANK()를 사용하고 첫번째 가장 높은 급여에 대한 묶는 두 명의 직원이있는 경우 Wheareas, RANK와 더 기록 = 내가 DENSE_RANK을 (제안 2.
) 이러한 경우에 선택할 수있는 일반적으로 가장 안전한 기능이있을 것 하지만 실제로는 특정 비즈니스 요구 사항에 따라 다릅니다. 이 표에서 n은 가장 높은 급여를 찾으려면
1
, 당신은이를 사용할 수 있습니다
이select min(sal)from (select distinct sal from emp order by sal desc) where rownum<=n;
는 1,2,3, ..., n은
그것은이다 n이된다 테이블에서 최대 봉급을 알아내는 매우 쉬운 과정.
관련 문제
- 1. Visual C#에서 배열의 두 번째로 높은 숫자를 얻는 방법?
- 2. HttpServletResponse를 두 번째로 호출하십시오.
- 3. 두 번째로 DataBinding이 작동하지 않는 이유는 무엇입니까?
- 4. 두 번째로 고집하는 UISlider
- 5. 두 번째로 앞쪽에있는 앱?
- 6. 빈 MFMailComposeViewController 두 번째로 표시됩니까?
- 7. 두 번째로 smtp 포트 25를 연결하는 방법은 무엇입니까?
- 8. 두 문자열 간의 차이점을 찾는 방법은 무엇입니까?
- 9. 두 이미지의 메트릭 값을 찾는 방법은 무엇입니까?
- 10. 두 장소 사이의 위치를 찾는 방법은 무엇입니까?
- 11. 추가 두 번째로 마지막 요소
- 12. 두 번째로 세션을 시작 하시겠습니까?
- 13. 내비게이션 컨트롤러가 두 번째로 중단됨
- 14. uiwebview가 두 번째로 index.html을로드하지 않습니다.
- 15. 두 번째 창 원인을 두 번째로 생성 한 생성 두 번째로 작성된
- 16. NSPredicate를 생성하여 앞선 수치 값을 가진 엔트리를 찾는 방법은 무엇입니까?
- 17. Android에서 특정 확장명을 가진 모든 파일을 찾는 방법은 무엇입니까?
- 18. std :: set에서 특정 필드 값을 가진 객체를 찾는 방법은 무엇입니까?
- 19. BST의 n 번째로 작은 요소
- 20. Java : 직렬화가 두 번째로 작동하지 않습니다.
- 21. LINQ를 사용하여 동일한 컬렉션의 두 속성간에 교차를 찾는 방법은 무엇입니까?
- 22. 높은 권한을 가진 Mac App Store 앱
- 23. 서브 액티브를 두 번째로 시작하면 java.lang.OutOfMemoryError가 발생합니다.
- 24. 2 차원 파이썬 배열 : 두 번째로 먼저 정렬
- 25. 행에서 값을 찾는 방법은 무엇입니까?
- 26. 두 번째로 구분 된 데이터 구조를 파싱합니다.
- 27. 두 번째로 내가 LINQ에 새로운 해요 LINQ
- 28. Jquery Onclick이 두 번째로 발생하지 않습니다.
- 29. 왜 C# 컴파일러가 두 번째로 시작됩니까?
- 30. 메뉴를 두 번째로 클릭하면 페이지가 표시되지 않습니다.
-1 나는 이것이 무엇을 돌려 줄지는 모르겠지만 아마도 그 질문이 무엇인지에 대해서는 확신 할 수 없다 :-) –
"method"와 무엇을 의미 하느냐에 달려있다. 나를 위해 방법은 결과를 얻는 과정입니다; 그리고 이것은 내 제안 된 방법입니다. 내 첫 번째 downvote 감사합니다 :). – systempuntoout
@Aaron : 아마도 결과를 반환하는 가장 효과적인 방법은 아니지만 (자체 조인을 사용하기 때문에) 정확한 답변을 반환합니다. * 급여를 제공하는 것은 고유합니다. * (세 사람이있는 경우 예를 들어 작동하지 않습니다. 동일한 최고 봉급으로). –