Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí na: 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
Tato funkce vrací přibližný počet jedinečných nenulových hodnot v grupě.
Syntaxe
APPROX_COUNT_DISTINCT ( expression )
Arguments
expression
Výraz jakéhokoliv typu, kromě obrazu, sql_variant, ntextu nebo textu.
Návratové typy
bigint
Poznámky
APPROX_COUNT_DISTINCT( expression ) vyhodnotí výraz pro každý řádek ve skupině a vrátí přibližný počet unikátních nenulových hodnot v grupě. Tato funkce je navržena tak, aby poskytovala agregace napříč velkými datovými sadami, kde je odezva důležitější než absolutní přesnost.
APPROX_COUNT_DISTINCT je navržen pro použití ve scénářích big data a je optimalizován pro následující podmínky:
- Přístup k datovým sadám, které mají miliony řádků nebo více a
- Agregace sloupce nebo sloupců, které mají mnoho odlišných hodnot
Implementace funkce zaručuje až 2% chybovosti v rámci pravděpodobnosti 97%.
APPROX_COUNT_DISTINCT vyžaduje méně paměti než vyčerpávající operace COUNT DISTINCT. Vzhledem k menší paměťové otěžbě je méně pravděpodobné, APPROX_COUNT_DISTINCT že se paměť přelije na disk ve srovnání s přesnou operací COUNT DISTINCT. Pro více informací o algoritmu používaném k dosažení tohoto cíle navštivte HyperLogLog.
Poznámka:
U řetězců citlivých na kolaci APPROX_COUNT_DISTINCT používá binární shodu a poskytuje výsledky, které by byly generovány v přítomnosti kolací BIN, nikoli BIN2.
Examples
A. Používám APPROX_COUNT_DISTINCT
Tento příklad vrací přibližný počet různých klíčů pořadí z tabulky pořadí.
SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;
Tady je soubor výsledků.
Approx_Distinct_OrderKey
------------------------
15164704
B. Použitím APPROX_COUNT_DISTINCT s GROUP BY
Tento příklad vrací přibližný počet různých klíčů objednávek podle stavu objednávek z tabulky objednávek.
SELECT O_OrderStatus, APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders
GROUP BY O_OrderStatus
ORDER BY O_OrderStatus;
Tady je soubor výsledků.
O_OrderStatus Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F 7397838
O 7387803
P 388036
Viz také
agregační funkce
COUNT (Transact-SQL)