Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: 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
Questa funzione restituisce il numero approssimativo di valori univoci non Null in un gruppo.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
APPROX_COUNT_DISTINCT ( expression )
Argomenti
expression
Espressione di qualsiasi tipo, a eccezione di image, sql_variant, ntext o text.
Tipi restituiti
bigint
Osservazioni:
APPROX_COUNT_DISTINCT( expression ) valuta un'espressione per ogni riga in un gruppo e restituisce il numero approssimativo di valori univoci non Null in un gruppo. Questa funzione è progettata per fornire aggregazioni su set di dati di grandi dimensioni in cui la velocità di risposta è più importante della precisione assoluta.
APPROX_COUNT_DISTINCT è progettata per l'uso in scenari Big Data ed è ottimizzata per le condizioni seguenti:
- Accesso a set di dati con più di milioni di righe e
- Aggregazione di una colonna o di più colonne con molti valori distinti
L'implementazione della funzione garantisce un tasso di errore fino al 2% con una probabilità del 97%.
APPROX_COUNT_DISTINCT richiede meno memoria rispetto a un'operazione COUNT DISTINCT completa. Dato il footprint di memoria più piccolo, è meno probabile che APPROX_COUNT_DISTINCT causi lo spill della memoria su disco rispetto a un'operazione COUNT DISTINCT precisa. Per altre informazioni sull'algoritmo usato per ottenere questo risultato, vedere HyperLogLog.
Nota
Con le stringhe sensibili alle regole di confronto, APPROX_COUNT_DISTINCT usa una corrispondenza binaria e fornisce i risultati che verrebbero generati in presenza di regole di confronto BIN e non BIN2.
Esempi
R. Uso di APPROX_COUNT_DISTINCT
Questo esempio restituisce il numero approssimativo di chiavi di ordine diverse dalla tabella orders.
SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;
Il set di risultati è il seguente.
Approx_Distinct_OrderKey
------------------------
15164704
B. Uso di APPROX_COUNT_DISTINCT con GROUP BY
Questo esempio restituisce il numero approssimativo di chiavi di ordine diverse in base allo stato dell'ordine dalla tabella orders.
SELECT O_OrderStatus, APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders
GROUP BY O_OrderStatus
ORDER BY O_OrderStatus;
Il set di risultati è il seguente.
O_OrderStatus Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F 7397838
O 7387803
P 388036
Vedi anche
Funzioni di aggregazione (Transact-SQL)
CONTE (Transact-SQL)