> 데이터 베이스 > MySQL 튜토리얼 > Oracle의 분석 기능은 어떻게 두 번째로 높은 직원 급여를 찾을 수 있습니까?

Oracle의 분석 기능은 어떻게 두 번째로 높은 직원 급여를 찾을 수 있습니까?

DDD
풀어 주다: 2025-01-07 17:56:40
원래의
147명이 탐색했습니다.

How Can Oracle's Analytic Functions Find the Second Highest Employee Salary?

Oracle 분석 기능을 사용하여 두 번째로 높은 직원 급여 찾기

직원 데이터 테이블에서는 두 번째로 높은 급여를 찾는 것이 일반적입니다. 다른 프로그래밍 언어와 달리 Oracle은 이 작업을 단순화하기 위해 일련의 분석 기능을 제공합니다.

두 번째로 높은 연봉에 대해 사전 정의된 함수 찾기

Oracle은 두 번째로 높은 급여를 찾는 데 도움이 되는 몇 가지 분석 기능을 제공합니다. 여기에는 다음이 포함됩니다.

  • DENSE_RANK()
  • 순위()
  • ROW_NUMBER()

두 번째로 높은 연봉만 선택

두 번째로 높은 급여만 검색해야 하는 경우 위 기능 중 하나를 사용할 수 있습니다. 예:

<code class="language-sql">SELECT sal
FROM (
  SELECT DISTINCT sal,
         RANK() OVER (ORDER BY sal DESC) AS rnk
  FROM emp
)
WHERE rnk = 2;</code>
로그인 후 복사

기타 직원 정보 선택

기타 직원 정보 선택 시 중복도 고려해야 하기 때문에 기능 선택이 매우 중요해집니다.

ROW_NUMBER()

ROW_NUMBER()는 급여순으로 두 번째 직원을 반환합니다. 그러나 최고 또는 두 번째로 높은 급여가 동률인 경우 행을 건너뛸 수 있습니다.

순위()

RANK()는 최고 연봉이 동점일 경우 기록을 건너뜁니다. 이 경우 RANK = 2인 레코드는 없습니다.

DENSE_RANK()

DENSE_RANK()는 동점인 경우에도 레코드 순서를 유지하므로 일반적으로 선호됩니다. 동점인 기록에 고유한 순위를 할당합니다.

두 번째로 높은 연봉을 선택하고 이름을 입력하세요

두 번째로 높은 급여와 직원 이름을 모두 선택하려면 다음 기능을 조합하여 사용할 수 있습니다.

<code class="language-sql">SELECT name, sal
FROM emp
WHERE sal = (SELECT MAX(sal) FROM emp WHERE sal < (SELECT MAX(sal) FROM emp));</code>
로그인 후 복사

또는 논리를 보다 명확하게 표현하려면 다음 방법을 사용할 수 있습니다.

<code class="language-sql">SELECT name, sal
FROM (
    SELECT name, sal, DENSE_RANK() OVER (ORDER BY sal DESC) as rank
    FROM emp
) ranked_salaries
WHERE rank = 2;
</code>
로그인 후 복사

위 내용은 Oracle의 분석 기능은 어떻게 두 번째로 높은 직원 급여를 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿