Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: 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
Deze functie geeft het geschatte aantal unieke niet-nulwaarden in een groep terug.
Transact-SQL syntaxis-conventies
Syntaxis
APPROX_COUNT_DISTINCT ( expression )
Arguments
expressie
Een uitdrukking van welk type dan ook, behalve afbeelding, sql_variant, ntext of tekst.
Retourtypen
bigint
Opmerkingen
APPROX_COUNT_DISTINCT( expression ) evalueert een uitdrukking voor elke rij in een groep en geeft het geschatte aantal unieke niet-nulwaarden in een groep terug. Deze functie is ontworpen om aggregaties te bieden over grote datasets waarbij responsiviteit belangrijker is dan absolute precisie.
APPROX_COUNT_DISTINCT is ontworpen voor gebruik in big data-scenario's en is geoptimaliseerd voor de volgende omstandigheden:
- Toegang tot datasets die miljoenen rijen of hoger zijn en
- Aggregatie van een kolom of kolommen die veel verschillende waarden hebben
De functie-implementatie garandeert een foutpercentage tot 2% binnen een kans van 97%.
APPROX_COUNT_DISTINCT vereist minder geheugen dan een uitputtende COUNT DISTINCT-operatie. Gezien de kleinere geheugenvoetafdruk APPROX_COUNT_DISTINCT is de kans kleiner dat geheugen naar de schijf wordt gestort vergeleken met een precieze COUNT DISTINCT-operatie. Voor meer informatie over het algoritme dat hiervoor is gebruikt, zie HyperLogLog.
Opmerking
Bij collatiegevoelige strings gebruikt APPROX_COUNT_DISTINCT een binaire match en levert resultaten die zouden zijn gegenereerd in aanwezigheid van BIN-collaties en niet BIN2.
Voorbeelden
Eén. Met APPROX_COUNT_DISTINCT
Dit voorbeeld geeft het geschatte aantal verschillende ordersleutels uit de ordertabel terug.
SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;
Hier is het resultatenoverzicht.
Approx_Distinct_OrderKey
------------------------
15164704
B. Gebruik APPROX_COUNT_DISTINCT met GROUP BY
Dit voorbeeld geeft het geschatte aantal verschillende ordersleutels terug volgens orderstatus uit de ordertabel.
SELECT O_OrderStatus, APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders
GROUP BY O_OrderStatus
ORDER BY O_OrderStatus;
Hier is het resultatenoverzicht.
O_OrderStatus Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F 7397838
O 7387803
P 388036