COUNT() OVER를 사용하여 파티션에 걸쳐 고유한 값 계산
COUNT() OVER 파티션 함수를 사용할 때 고유한 값을 계산하는 문제 극복 SQL Server의 일반적인 문제입니다. 이 문서에서는density_rank()와 산술 연산의 조합을 사용하여 원하는 결과를 얻기 위한 대체 접근 방식을 살펴봅니다.
원래 쿼리 및 오류
원래 쿼리는 다음을 계산하려고 시도합니다. COUNT(DISTINCT) OVER를 사용하여 고유 값의 누적 합계:
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
그러나, SQL Server에서는 DISTINCT와 파티션 함수의 비호환성으로 인해 오류가 발생합니다.
Dense_rank()를 사용한 대체 솔루션
이 문제에 대한 실질적인 해결 방법은density_rank를 활용하는 것입니다. () 함수를 간단한 산술 연산과 함께 사용:
dense_rank() over (partition by [Mth] order by [UserAccountKey]) + dense_rank() over (partition by [Mth] order by [UserAccountKey] desc) - 1
이 표현식은 매월 고유 값의 누적 합계입니다. 작동 방식은 다음과 같습니다.
위 내용은 SQL Server의 파티션 내 고유 값을 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!