対象者: 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 値の概数を返します。
構文
APPROX_COUNT_DISTINCT ( expression )
引数
式 (expression)
image、sql_variant、ntext、text を除く、任意の型の式です。
戻り値の型
bigint
解説
APPROX_COUNT_DISTINCT( expression ) はグループ内の各行に対して式を評価し、グループ内の一意の非 null 値の概数を返します。 この関数は、絶対的な精度よりも応答性が重要となる場合に、大規模なデータ セット全体の集計を提供するために設計されています。
APPROX_COUNT_DISTINCT はビッグ データのシナリオで使用するために設計されており、次の条件に向けて最適化されています。
- 数百万行以上のデータ セットへのアクセス、"および"
- 異なる値を多数持つ 1 つまたは複数の列の集計
97% の確率でエラー率が最大 2% 以内に収まることが、関数の実装によって保証されます。
APPROX_COUNT_DISTINCT に必要なメモリは、完全な COUNT DISTINCT 操作よりも少なくて済みます。 メモリの使用量が少ないため、APPROX_COUNT_DISTINCT がメモリをディスクに書き込む可能性は、正確な COUNT DISTINCT 操作に比べて小さくなります。 これを実現するために使用されるアルゴリズムの詳細については、「HyperLogLog」をご覧ください。
注意
照合順序に依存する文字列では、APPROX_COUNT_DISTINCT ではバイナリ一致が使用され、BIN 照合順序がある場合 (BIN2 はなし) に生成されるのと同じ結果が提供されます。
例
A. APPROX_COUNT_DISTINCT を使用する
この例では、orders テーブルのさまざまな順序キーの概数が返されます。
SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;
結果セットは次のとおりです。
Approx_Distinct_OrderKey
------------------------
15164704
B. GROUP BY と共に APPROX_COUNT_DISTINCT を使用する
この例では、orders テーブルのさまざまな順序キーの概数が、順序のステータスによって返されます。
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