SQL DENSE_RANK() 함수

Sql Dense Rank Hamsu



창 함수는 SQL의 중요한 기능이며 SQL 데이터베이스의 복잡한 데이터 계산 및 작업에서 기본적인 역할을 합니다. SQL 창 함수의 함수 중 하나는density_rank()입니다.

DENSE_RANK() 함수를 사용하면 하나 이상의 지정된 열에 있는 값을 기반으로 결과 집합 내의 각 행에 고유한 순위를 할당할 수 있습니다. 이는 Rank() 함수와 매우 유사하지만 함수가 중복 레코드를 처리하는 방법에 약간의 차이가 있습니다.

이 튜토리얼에서는 이 함수의 작동 방식, 제공된 구문, 데이터베이스에서 이를 사용하는 방법을 살펴보겠습니다.







작동 방식

이 기능이 어떻게 작동하는지 설명하는 것부터 시작하겠습니다. 이 함수는 상위 수준이므로 기본 구현을 설명할 수 없다는 점을 명심하는 것이 좋습니다.



이 함수는 순위 1부터 시작하여 열의 각 고유 값에 대해 1씩 증가하여 결과 집합의 각 행에 순위를 할당하는 방식으로 작동합니다.



지정된 열에서 비슷한 값(중복)이 있는 행에는 동일한 순위가 할당되고, 다른 값이 있는 다음 행에는 공백 없이 사용 가능한 다음 순위가 할당됩니다.





앞서 언급했듯이 이 함수는 Rank() 함수와 다른 중복된 값이 있는 부분에 공백을 두지 않습니다.

density_rank() 함수의 일반적인 용도는 순위 작업을 수행하는 것입니다. 예를 들어, 상위 N개 레코드 등을 찾는 데 사용할 수 있습니다.



함수 구문:

다음은density_rank() 함수의 구문을 설명합니다.

DENSE_RANK() 초과(

[PARTITION BY 파티션_표현식, ... ]

주문하다 BY sort_expression [ASC | 설명], ...

)

주어진 구문에서:

  1. density_rank() 함수 자체부터 시작합니다.
  2. OVER 절은 창 함수 사양의 시작을 나타냅니다. 이는 결과 집합 내에서 순위가 ​​적용되는 방식을 정의합니다.
  3. PARTITION BY partition_expression은 결과 집합을 하나 이상의 열을 기반으로 그룹이나 파티션으로 분할할 수 있는 선택적 절입니다. 순위는 새 파티션에서 재설정되는 순위와 함께 각 파티션에 별도로 적용됩니다.
  4. ORDER BY sort_expression은 결과 파티션의 데이터를 정렬하는 데 사용할 순서를 지정합니다.

샘플 데이터

density_rank() 함수를 사용하는 방법을 보여주기 위해 샘플 데이터가 있는 테이블부터 시작하겠습니다. 우리의 경우 다음과 같이 샘플 '주문' 테이블을 사용합니다.

예제 1: Dense_Rank() 함수 사용법

density_rank() 함수를 사용하여 가격을 기준으로 결과 주문의 순위를 지정할 수 있습니다. 다음 예제 쿼리를 고려해보세요.

선택하다

주문 아이디,

고객_사용자 이름,

제품_구매,

DENSE_RANK() 초과(

주문하다 에 의해

가격 디스크

) 가격_순위

에서

주문 오;

주어진 예에서는density_rank() 함수를 사용하여 주문 가격을 기준으로 데이터 순위를 매깁니다. 데이터를 그룹화하지 않으므로 PARTITION BY 절을 생략합니다.

결과 출력은 다음과 같습니다.

예 2: PARTITION BY

또한 PARTITION BY 절을 추가하여 구매한 제품을 기준으로 데이터를 다양한 세그먼트로 그룹화할 수도 있습니다.

예시 쿼리는 다음과 같습니다.

선택하다

주문 아이디,

고객_사용자 이름,

제품_구매,

DENSE_RANK() 초과(

제품별 파티션_구매

주문하다 에 의해

가격 디스크

) 가격_순위

에서

주문 오;

결과 그룹을 기반으로 데이터를 다양한 그룹으로 그룹화하고 각 그룹의 항목에 순위를 적용해야 합니다.

결론

이 게시물에서 우리는 특정 열을 기반으로 값에 순위를 할당하기 위해 SQL의density_rank() 창 함수를 사용하고 작업하는 기본 사항을 배웠습니다.