APPROX_COUNT_DISTINCT (Transact-SQL)APPROX_COUNT_DISTINCT (Transact-SQL)

適用対象:Applies to: うんSQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance yesAzure Synapse Analytics適用対象:Applies to: うんSQL Server 2019 (15.x)SQL Server 2019 (15.x)yesSQL Server 2019 (15.x)SQL Server 2019 (15.x) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance yesAzure Synapse Analytics

この関数は、グループ内の一意の非 null 値の概数を返します。This function returns the approximate number of unique non-null values in a group.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

-- Syntax for Azure SQL Database, Azure SQL Data Warehouse and Parallel Data Warehouse  

APPROX_COUNT_DISTINCT ( expression )   

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

式 (expression)expression
imagesql_variantntexttext を除く、任意の型のです。An expression of any type, except image, sql_variant, ntext, or text.

戻り値の型Return types

bigintbigint

解説Remarks

APPROX_COUNT_DISTINCT( expression ) はグループ内の各行に対して式を評価し、グループ内の一意の非 null 値の概数を返します。APPROX_COUNT_DISTINCT( expression ) evaluates an expression for each row in a group, and returns the approximate number of unique non-null values in a group. この関数は、絶対的な精度よりも応答性が重要となる場合に、大規模なデータ セット全体の集計を提供するために設計されています。This function is designed to provide aggregations across large data sets where responsiveness is more critical than absolute precision.

APPROX_COUNT_DISTINCT はビッグ データのシナリオで使用するために設計されており、次の条件に向けて最適化されています。APPROX_COUNT_DISTINCT is designed for use in big data scenarios and is optimized for the following conditions:

  • 数百万行以上のデータ セットへのアクセス、"および"Access of data sets that are millions of rows or higher and
  • 異なる値を多数持つ 1 つまたは複数の列の集計Aggregation of a column or columns that have many distinct values

97% の確率でエラー率が最大 2% 以内に収まることが、関数の実装によって保証されます。The function implementation guarantees up to a 2% error rate within a 97% probability.

APPROX_COUNT_DISTINCT に必要なメモリは、完全な COUNT DISTINCT 操作よりも少なくて済みます。APPROX_COUNT_DISTINCT requires less memory than an exhaustive COUNT DISTINCT operation. メモリの使用量が少ないため、APPROX_COUNT_DISTINCT がメモリをディスクに書き込む可能性は、正確な COUNT DISTINCT 操作に比べて小さくなります。Given the smaller memory footprint, APPROX_COUNT_DISTINCT is less likely to spill memory to disk compared to a precise COUNT DISTINCT operation. これを実現するために使用されるアルゴリズムの詳細については、「HyperLogLog」をご覧ください。To learn more about the algorithm used to achieve this, see HyperLogLog.

注意

照合順序に依存する文字列では、APPROX_COUNT_DISTINCT ではバイナリ一致が使用され、BIN 照合順序がある場合 (BIN2 はなし) に生成されるのと同じ結果が提供されます。With collation sensitive strings, APPROX_COUNT_DISTINCT uses a binary match and provides results that would have been generated in the presence of BIN collations and not BIN2.

Examples

A.A. APPROX_COUNT_DISTINCT を使用するUsing APPROX_COUNT_DISTINCT

この例では、orders テーブルのさまざまな順序キーの概数が返されます。This example returns the approximate number of different order keys from the orders table.

SELECT APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders;

結果セットは次のようになります。Here is the result set.

Approx_Distinct_OrderKey
------------------------
15164704

B.B. GROUP BY と共に APPROX_COUNT_DISTINCT を使用するUsing APPROX_COUNT_DISTINCT with GROUP BY

この例では、orders テーブルのさまざまな順序キーの概数が、順序のステータスによって返されます。This example returns the approximate number of different order keys by order status from the orders table.

SELECT O_OrderStatus, APPROX_COUNT_DISTINCT(O_OrderKey) AS Approx_Distinct_OrderKey
FROM dbo.Orders
GROUP BY O_OrderStatus
ORDER BY O_OrderStatus; 

結果セットは次のようになります。Here is the result set.

O_OrderStatus                                                    Approx_Distinct_OrderKey
---------------------------------------------------------------- ------------------------
F                                                                7397838
O                                                                7387803
P                                                                388036

参照See also

集計関数 (Transact-SQL)Aggregate Functions (Transact-SQL)
COUNT (Transact-SQL)COUNT (Transact-SQL)