> 데이터 베이스 > MySQL 튜토리얼 > SQL RANK()와 ROW_NUMBER(): 동점 처리 시 어떻게 다릅니까?

SQL RANK()와 ROW_NUMBER(): 동점 처리 시 어떻게 다릅니까?

Susan Sarandon
풀어 주다: 2025-01-13 16:56:43
원래의
890명이 탐색했습니다.

SQL RANK() vs. ROW_NUMBER(): How Do They Differ When Handling Ties?

SQL RANK() 및 ROW_NUMBER(): 차이점에 대한 자세한 설명

SQL에서 RANK()와 ROW_NUMBER()는 기능이 유사하여 혼동되기 쉽습니다. 그러나 효과적인 데이터 조작을 위해서는 미묘한 차이점을 이해하는 것이 중요합니다.

RANK()와 ROW_NUMBER() 비교

RANK()는 파티션 내에서 정렬 값이 동일한 행과 열에 동일한 순위를 할당하는 반면, ROW_NUMBER()는 값이 동일한 행과 열에 대해서도 항상 증가합니다.

주요 차이점: 중복 값 처리

RANK()와 ROW_NUMBER()의 주요 차이점은 파티션 내에서 중복 값이 ​​발견될 때의 동작입니다.

  • RANK(): 중복된 값이 있는 행에 동일한 순위를 할당합니다.
  • ROW_NUMBER(): 중복된 값이 있는 행에 임의로 증가하는 순위를 할당합니다.

다음 형식을 고려하세요.

StyleID ID Description
1 1 Item A
1 1 Item B
1 1 Item C
1 2 Item D

다음 쿼리를 사용하세요.

<code class="language-sql">SELECT ID, Description, RANK() OVER (PARTITION BY StyleID ORDER BY ID) AS 'Rank' FROM SubStyle;
SELECT ID, Description, ROW_NUMBER() OVER (PARTITION BY StyleID ORDER BY ID) AS 'RowNumber' FROM SubStyle;</code>
로그인 후 복사

파티션 내에 중복된 값이 없을 경우에만 동일한 결과를 얻을 수 있습니다. 예를 들어 StyleID가 3이고 ID가 1인 다른 행을 추가하면 다음과 같은 결과가 나타납니다.

StyleID ID Description Rank RowNumber
1 1 Item A 1 1
1 1 Item B 1 2
1 1 Item C 1 3
1 2 Item D 4 4
3 1 New Item 1 5

보시다시피 StyleID가 3인 고유 값의 경우 ROW_NUMBER()는 증가하는 숫자를 할당하고 RANK()는 StyleID가 1인 중복 값이 ​​있는 행과 동일한 순위를 할당합니다.

결론

RANK()와 ROW_NUMBER()는 서로 다른 용도로 사용됩니다. RANK()는 그룹 내에서 고유한 값의 순위를 지정하고 중복 값을 적절하게 처리하는 데 사용됩니다. 반면에 ROW_NUMBER()는 항상 증가하므로 값이 중복된 행의 경우에도 각 행에 고유한 숫자 값이 있습니다. SQL 데이터로 작업할 때 정보에 입각한 결정을 내리려면 이러한 차이점을 이해하는 것이 중요합니다.

위 내용은 SQL RANK()와 ROW_NUMBER(): 동점 처리 시 어떻게 다릅니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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