> 데이터 베이스 > MySQL 튜토리얼 > Oracle의 Rank () vs. Dense_Rank () : Nth 급여를 찾고 NULL 값을 처리하는 방법은 무엇입니까?

Oracle의 Rank () vs. Dense_Rank () : Nth 급여를 찾고 NULL 값을 처리하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2025-01-25 00:16:12
원래의
936명이 탐색했습니다.

RANK() vs. DENSE_RANK() in Oracle: How to Find the Nth Salary and Handle Null Values?

오라클의 RANK() 및 DENSE_RANK(): N번째 최고 연봉 찾기

이 기사에서는 Oracle의 RANK()DENSE_RANK() 함수 간의 차이점을 살펴보고 n번째 최고 급여를 식별하고 잠재적인 null 값을 처리하는 데 사용되는 방법을 보여줍니다.

RANK()DENSE_RANK()

의 이해

두 함수 모두 순서가 지정된 데이터 세트(파티션) 내에서 순위를 할당합니다. 주요 차이점은 관계 처리에 있습니다.

  • RANK(): 동점 값에 동일한 순위를 할당하여 순위 순서에 간격을 둡니다. 3명의 직원이 2위를 공유할 경우 다음 순위는 5위가 됩니다.

  • DENSE_RANK(): 또한 동일한 순위를 동일한 값에 할당하지만 공백은 없습니다. 3명의 직원이 2위를 공유할 경우 다음 순위는 3위가 됩니다.

N번째 최고 연봉 추출

다음 쿼리는 RANK()을 사용하여 n번째로 높은 급여를 찾습니다.

<code class="language-sql">SELECT *
FROM (
    SELECT emp.*, RANK() OVER (ORDER BY sal DESC) as salary_rank
    FROM emptbl emp
) ranked_salaries
WHERE salary_rank = n;</code>
로그인 후 복사

n을 원하는 순위로 바꿉니다(예: 세 번째로 높은 급여는 3). 내림차순 순위에 중요한 ORDER BY sal DESC 절에 주목하세요.

Null 값 고려 사항

NULL 값의 처리는 ORDER BY 절에 따라 다릅니다.

  • ORDER BY sal NULLS FIRST: NULL 급여가 1위입니다.

  • ORDER BY sal NULLS LAST: NULL 급여가 맨 마지막에 랭크됩니다.

예: NULL 급여가 포함된 테이블을 생각해 보세요. NULLS LAST를 사용하면 상위 3개 급여에 대한 쿼리는 상위 3개에서 NULL 급여를 받는 직원을 제외합니다. 반대로 NULLS FIRST에는 해당 항목이 포함되어 잠재적으로 순위의 최상위에 올 수 있습니다.

포괄적인 가이드와 추가 예를 보려면 자세한 설명 및 예

리소스를 참조하세요.

위 내용은 Oracle의 Rank () vs. Dense_Rank () : Nth 급여를 찾고 NULL 값을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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