APPROX_COUNT_DISTINCT(Transact-SQL)

적용 대상: 예SQL Server 2019 (15.x) 예Azure SQL Database 예Azure SQL Managed Instance 예Azure Synapse Analytics

이 함수는 그룹에 있는 고유한 null이 아닌 값의 대략적인 개수를 반환합니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

APPROX_COUNT_DISTINCT ( expression )   

참고

SQL Server 2014 이전 버전의 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조하세요.

인수

expression
image, sql_variant, ntext 또는 text 를 제외한 모든 형식의 입니다.

반환 형식

bigint

설명

APPROX_COUNT_DISTINCT( expression )는 그룹의 각 행에 대한 식을 계산하고 그룹에 있는 고유한 null이 아닌 값의 대략적인 개수를 반환합니다. 이 함수는 절대적인 정밀도보다 응답성이 더 중요한 큰 데이터 집합을 기반으로 집계를 제공하도록 디자인되었습니다.

APPROX_COUNT_DISTINCT는 빅 데이터 시나리오에서 사용하도록 디자인되고 다음 조건에 최적화됩니다.

  • 수백만 개 이상의 행을 나타내는 데이터 집합의 액세스
  • 많은 고유 값이 포함된 열의 집계

함수 구현은 최대 97% 확률 중에 최대 2% 오류 비율을 보장합니다.

APPROX_COUNT_DISTINCT에는 완전한 COUNT DISTINCT 작업보다 적은 메모리가 필요합니다. 메모리 사용 공간이 작을 경우 APPROX_COUNT_DISTINCT는 정확한 COUNT DISTINCT 작업에 비해 메모리를 디스크에 분산시킬 가능성이 적습니다. 이를 수행하는 데 사용되는 알고리즘에 대한 자세한 내용은 HyperLogLog를 참조하세요.

참고

데이터 정렬이 중요한 문자열을 사용하면 APPROX_COUNT_DISTINCT는 이진 일치를 사용하고 BIN2가 아닌 BIN 데이터 정렬에서 생성된 결과를 제공합니다.

예제

A. APPROX_COUNT_DISTINCT 사용

이 예제에서는 orders 테이블에서 다양한 주문 키의 대략적인 개수를 반환합니다.

SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;

결과 집합은 다음과 같습니다.

Approx_Distinct_OrderKey
------------------------
15164704

B. GROUP BY와 함께 APPROX_COUNT_DISTINCT 사용

이 예제에서는 orders 테이블에서 주문 상태별로 다양한 주문 키의 대략적인 개수를 반환합니다.

SELECT O_OrderStatus, APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders
GROUP BY O_OrderStatus
ORDER BY O_OrderStatus; 

결과 집합은 다음과 같습니다.

O_OrderStatus                                                    Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F                                                                7397838
O                                                                7387803
P                                                                388036

참고 항목

집계 함수(Transact-SQL)
COUNT(Transact-SQL)