Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Относится к: 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
Эта функция возвращает приблизительное количество уникальных значений, не равных NULL, в группе.
Соглашения о синтаксисе Transact-SQL
Синтаксис
APPROX_COUNT_DISTINCT ( expression )
Аргументы
выражение
Выражение любого типа, кроме image, sql_variant, ntext и text.
Типы возвращаемых данных
bigint
Замечания
Функция APPROX_COUNT_DISTINCT( expression ) вычисляет выражение для каждой строки в группе и возвращает приблизительное количество уникальных значений, не равных NULL, в группе. Эта функция предназначена для агрегирования в больших наборах данных, для которых скорость реагирования намного важнее абсолютной точности.
Функция APPROX_COUNT_DISTINCT предназначена для использования в сценариях использования больших данных и оптимизирована для следующих условий:
- доступ из наборов данных, содержащих миллионы или более строк, И
- агрегирование данных одного или нескольких столбцов с большим количеством различных значений.
Реализация функции гарантирует до 2 % ошибок с вероятностью 97 %.
APPROX_COUNT_DISTINCT использует меньше памяти, чем длительная операция COUNT DISTINCT. Если сравнивать с точной операцией COUNT DISTINCT, то с учетом меньшего объема используемой памяти уменьшается и вероятность того, что APPROX_COUNT_DISTINCT память будет выгружаться на диск. См. дополнительные сведения о HyperLogLog.
Примечание.
С помощью строк, зависимых от параметров сортировки, APPROX_COUNT_DISTINCT использует совпадение двоичных значений и предоставляет результаты, которые могли быть созданы при наличии параметров сортировки BIN, но не BIN2.
Примеры
А. Использование функции APPROX_COUNT_DISTINCT
В этом примере функция возвращает приблизительное количество ключей различных заказов из таблицы "Заказы".
SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;
Вот результирующий набор.
Approx_Distinct_OrderKey
------------------------
15164704
B. Использование функции APPROX_COUNT_DISTINCT с фильтром GROUP BY
В этом примере функция возвращает приблизительное количество ключей различных заказов, отфильтрованных по состоянию заказов из таблицы "Заказы".
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