Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy do: SQL Server 2019 (15.x)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL analytics endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL database in Microsoft Fabric
Funkcja ta zwraca przybliżoną liczbę unikalnych wartości niezerowych w grupie.
Transact-SQL konwencje składni
Składnia
APPROX_COUNT_DISTINCT ( expression )
Arguments
expression
Wyrażenie dowolnego typu, z wyjątkiem obrazu, sql_variant, ntextu lub tekstu.
Typy zwracane
bigint
Uwagi
APPROX_COUNT_DISTINCT( expression ) oblicza wyrażenie dla każdego wiersza w grupie i zwraca przybliżoną liczbę unikalnych, niezerowych wartości w grupie. Funkcja ta została zaprojektowana tak, aby umożliwiać agregacje na dużych zbiorach danych, gdzie responsywność jest ważniejsza niż absolutna precyzja.
APPROX_COUNT_DISTINCT Jest zaprojektowany do zastosowań w scenariuszach big data i jest zoptymalizowany pod kątem następujących warunków:
- Dostęp do zbiorów danych o milionach wierszy lub większych oraz
- Agregacja kolumny lub kolumn, które mają wiele różnych wartości
Implementacja funkcji gwarantuje do 2% błędów w ramach prawdopodobieństwa 97%.
APPROX_COUNT_DISTINCT wymaga mniej pamięci niż wyczerpująca operacja COUNT DISTINCT. Ze względu na mniejszy ślad pamięci, jest mniej prawdopodobne, APPROX_COUNT_DISTINCT że rozlewa się na dysk w porównaniu do precyzyjnej operacji COUNT DISTINCT. Aby dowiedzieć się więcej o algorytmie używanym do tego celu, zobacz HyperLogLog.
Uwaga / Notatka
W przypadku ciągów wrażliwych na kolidację APPROX_COUNT_DISTINCT używa dopasowania binarnego i dostarcza wyniki, które byłyby generowane w obecności kolacji BIN, a nie BIN2.
Przykłady
A. Używając APPROX_COUNT_DISTINCT
Ten przykład zwraca przybliżoną liczbę różnych kluczy zamówień z tabeli zamówień.
SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;
Oto zestaw wyników.
Approx_Distinct_OrderKey
------------------------
15164704
B. Używając APPROX_COUNT_DISTINCT z GROUP BY
Ten przykład zwraca przybliżoną liczbę różnych kluczy zamówień według statusu zamówienia z tabeli zamówień.
SELECT O_OrderStatus, APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders
GROUP BY O_OrderStatus
ORDER BY O_OrderStatus;
Oto zestaw wyników.
O_OrderStatus Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F 7397838
O 7387803
P 388036
Zobacz także
funkcje agregujące (Transact-SQL)
COUNT (Transact-SQL)