Oracle 분석 기능을 사용하여 두 번째로 높은 직원 급여 찾기
직원 데이터 테이블에서는 두 번째로 높은 급여를 찾는 것이 일반적입니다. 다른 프로그래밍 언어와 달리 Oracle은 이 작업을 단순화하기 위해 일련의 분석 기능을 제공합니다.
두 번째로 높은 연봉에 대해 사전 정의된 함수 찾기
Oracle은 두 번째로 높은 급여를 찾는 데 도움이 되는 몇 가지 분석 기능을 제공합니다. 여기에는 다음이 포함됩니다.
두 번째로 높은 연봉만 선택
두 번째로 높은 급여만 검색해야 하는 경우 위 기능 중 하나를 사용할 수 있습니다. 예:
<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!