APPROX_COUNT_DISTINCT (Transact-SQL)
Gilt für:SQL Server 2019 (15.x)
Azure SQL-Datenbank
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Analytics-Endpunkt in Microsoft Fabric
Warehouse in Microsoft Fabric
Diese Funktion gibt die ungefähre Anzahl von eindeutigen Ungleich-Null-Werten in einer Gruppe zurück.
Transact-SQL-Syntaxkonventionen
Syntax
APPROX_COUNT_DISTINCT ( expression )
Hinweis
Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) oder früher finden Sie unter Dokumentation zu früheren Versionen.
Argumente
expression
Eine expression beliebigen Typs mit Ausnahme von image, sql_variant, ntextoder text.
Rückgabetypen
bigint
Bemerkungen
APPROX_COUNT_DISTINCT( expression )
wertet einen Ausdruck für jede Zeile in einer Gruppe aus und gibt die geschätzte Anzahl der eindeutigen Werte in einer Gruppe zurück, die nicht NULL sind. Diese Funktion wurde entwickelt, um Aggregationen über große Datasets hinweg bereitzustellen, bei denen die Reaktionsfähigkeit wichtiger ist als die absolute Präzision.
APPROX_COUNT_DISTINCT
ist für den Einsatz in großen Datenszenarien konzipiert und für die folgenden Bedingungen optimiert:
- Zugriff auf Datasets, die aus Millionen von Zeilen oder mehr bestehen und
- Aggregation einer Spalte oder von Spalten mit vielen unterschiedlichen Werten
Die Funktionsimplementierung garantiert eine Fehlerquote von bis zu 2 % mit einer Wahrscheinlichkeit von 97 %.
APPROX_COUNT_DISTINCT
erfordert weniger Speicherplatz als ein vollständiger COUNT DISTINCT-Vorgang. Angesichts des geringeren Speicherbedarfs ist es weniger wahrscheinlich, dass durch APPROX_COUNT_DISTINCT
weniger Speicher zum Datenträger überläuft, als bei einem präzisen COUNT DISTINCT-Vorgang. Weitere Informationen zu dem Algorithmus, mit dem dies erreicht wird, finden Sie unter HyperLogLog.
Hinweis
Bei sortierungsbezogenen Zeichenfolgen verwendet APPROX_COUNT_DISTINCT einen binären Abgleich und liefert Ergebnisse, die bei Vorhandensein von BIN-Sortierungen und nicht von BIN2 erzeugt worden wären.
Beispiele
A. Verwenden von APPROX_COUNT_DISTINCT
Dieses Beispiel gibt die ungefähre Anzahl verschiedener Sortierschlüssel aus der Sortiertabelle zurück.
SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;
Hier ist das Resultset.
Approx_Distinct_OrderKey
------------------------
15164704
B. Verwenden von APPROX_COUNT_DISTINCT mit GROUP BY
Dieses Beispiel gibt die ungefähre Anzahl verschiedener Sortierschlüssel geordnet nach Sortierstatus aus der Sortiertabelle zurück.
SELECT O_OrderStatus, APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders
GROUP BY O_OrderStatus
ORDER BY O_OrderStatus;
Hier ist das Resultset.
O_OrderStatus Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F 7397838
O 7387803
P 388036
Weitere Informationen
Feedback
Feedback senden und anzeigen für