>  기사  >  데이터 베이스  >  Oracle의 row_number(), Rank() 및density_rank()에 대한 간략한 설명

Oracle의 row_number(), Rank() 및density_rank()에 대한 간략한 설명

青灯夜游
青灯夜游앞으로
2020-05-13 15:03:082434검색

다음 글에서는 Oracle의 row_number(), Rank() 및density_rank()에 대해 설명합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

Oracle의 row_number(), Rank() 및density_rank()에 대한 간략한 설명

Oracle: row_number(),rank(),density_rank()

구문: ROW_NUMBER() OVER();

row_number는 매우 다양하므로 정렬에 사용하는 것이 가장 좋습니다. , it 일련 번호는 쿼리된 레코드의 각 행에 대해 생성되며 반복 없이 순서대로 정렬됩니다. row_number 함수를 사용할 때 일련 번호를 생성하려면 정렬할 열을 선택하기 위해 over 절을 사용해야 합니다.

rank 함수는 결과 집합의 파티션 내 각 행의 순위를 반환하는 데 사용됩니다. 행의 순위는 해당 행의 이전 순위에 1을 더한 값입니다. 간단히 말하면, 순위 함수는 row_number 함수와 달리, 순위 함수를 사용하여 생성하는 경우 over 절의 정렬 필드 값이 동일한 상황을 고려합니다. 일련번호, 오버 절의 정렬 필드는 동일한 값을 갖는 일련번호는 동일합니다. 다음에서 다른 필드 값을 갖는 일련번호는 동일한 순위 번호를 건너뛰고 다음 순위가 됩니다. 해당 행에 1을 더하면 현재 레코드 수를 기반으로 일련 번호가 생성되는 것으로 이해될 수 있습니다.

dense_rank 함수의 기능은 순위 함수와 유사합니다.density_rank 함수는 일련 번호를 생성할 때 연속적인 반면, 순위 함수에 의해 생성된 일련 번호는 불연속적일 수 있습니다. density_rank 함수에 동일한 순위가 나타날 경우 동일한 순위 번호를 건너뛰지 않으며 순위 값은 이전 순위 값을 따릅니다. 각 그룹 내에서 순위()는 점프 정렬입니다. 1위가 2개인 경우에는 3위가 뒤따릅니다. 1위가 2개인 경우에도 2위가 뒤따릅니다.

Partion by 정보: Partion by 키워드는 Oracle의 분석 기능의 일부이며 결과 집합을 분할하는 데 사용됩니다. 이 함수와 집계 함수 Group by의 차이점은 원본 데이터의 순위만 매기고 그룹의 여러 레코드를 반환할 수 있는 반면(레코드 수는 변경되지 않음) Group by는 원본 데이터에 대한 통계를 집계하고 일반적으로 하나의 응답만 갖는다는 것입니다. 통계값 결과(그룹당 하나가 반환됨)

TIPS:

순위 over()를 사용할 때 null 값이 가장 큽니다. 정렬 필드가 null인 경우 null 필드가 먼저 순위가 지정되어 정렬 결과에 영향을 미칠 수 있습니다.

다음과 같을 수 있습니다: 순위 초과(마지막 점수 설명 null에 의한 코스 순서로 파티션)

요약:

순위 기능을 사용할 때 다음 세 가지 사항에 주의해야 합니다.

1. 순위 함수에는 OVER 절이 있어야 합니다.

2. 순위 함수에는 ORDER BY가 포함된 OVER 절이 있어야 합니다.

3. 그룹 내에서 1개부터 정렬합니다.

추천 튜토리얼: "Oracle Tutorial"

위 내용은 Oracle의 row_number(), Rank() 및density_rank()에 대한 간략한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제