SQL RANK() 및 ROW_NUMBER(): 차이점에 대한 자세한 설명
SQL에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!