COUNTDISTINCTMEMBERS関数

COUNTDISTINCTMEMBERS関数は、すべての値の和集合を含むセット内の要素の数をカウントします。

COUNTDISTINCTMEMBERSは、この文と機能的に同等です:
CARDINALITY(SET_UNIONS(multi-assign-attribute))

つまり、COUNTDISTINCTMEMBERSは、1つの複数割当て属性のすべての値の和集合であるセットを作成した後、そのセット内の要素数を返します。

COUNTDISTINCTMEMBERS構文

COUNTDISTINCTMEMBERS関数の構文は次のとおりです。
COUNTDISTINCTMEMBERS(<multi-assign-attribute>)
この例では、multi-assign-attributeは複数割当て属性です。

COUNTDISTINCTMEMBERSの例

WineType=Red (WineTypeは単一割当て属性)の次の9個のレコードがあるとします。各レコードには複数割当てのBody属性に1つまたは2つの割当てが含まれています。
Body                WineID
--------------------------
{ Silky, Tannins }    3
{ Robust, Tannins }   4
{ Silky, Tannins }    5
{ Robust }            6
{ Robust }            8
{ Silky, Tannins }    9
{ Silky, Tannins }   12
{ Silky, Tannins }   16
{ Silky, Tannins }   18
--------------------------
次に示す文は、WineType=RedレコードのBody属性の重複を除いた値の数を返します。
RETURN Result AS
SELECT COUNTDISTINCTMEMBERS(Body) AS Total
FROM WineState
WHERE WineType = 'Red'
GROUP BY WineType
文の結果は次のとおりです。
Total=3, WineType=Red
このグループの場合、Body属性に対して一意の値を持つ空ではないセットが3つ存在するためTotalの値は3です。
  • レコード3、5、9、12、16および18のセット。各レコードはBodyに"Silky"および"Tannins"が割り当てられています。
  • レコード6および8のセット。各レコードはBodyに"Robust"が割り当てられています。
  • レコード4のセット。レコード4はBodyに"Robust"および"Tannins"が割り当てられています。

したがって、WineType属性でグルーピングした場合、Body属性の重複を除いた値のセットは3つあります。