COUNT関数

COUNT関数は、特定の属性の値を持つレコードの数を返します。

COUNT関数は、特定のフィールドの値がNULL以外であるレコードの数を、GROUP BYの結果ごとに数えます。COUNTは、複数割当て属性(セット)および単一割当て属性の両方で使用できます。

複数割当て属性の場合、COUNT関数は、グループ内のNULLではないすべてのセットを数えます。セットはNULLにはなりませんが、空にはなる可能性があるため、COUNTは、空のセットを持つレコードも数えます(つまり、指定した複数割当て属性に対して割当てを持たないレコードに対しては、空のセットを返します)。結果から空のセットを無視する方法は、下の2番目の例を参照してください。

COUNT関数の構文は次のとおりです。
COUNT(<attribute>)
ここで、attributeは、複数割当て属性または単一割当て属性です。

COUNTの例

次のレコードには、単一割当て属性Sizeおよび複数割当て属性Colorが含まれています。
Record 1: Size=small, Color=red, Color=white 
Record 2: Size=small, Color=blue, Color=green 
Record 3: Size=small, Color=black 
Record 4: Size=small 
次に示す文は、Color属性の値を持つレコードの数をサイズごとに返します。
RETURN result AS
SELECT COUNT(Color) AS Total
GROUP BY Size
文の結果は次のとおりです。
Record 1: Size=small, Total=4

Sizeの値がすべてのレコードで同一であるため、グループは1つのみであり、したがって1レコードしか存在しません。このグループの場合、レコード1-3にはColorが割り当てられており(空ではないセットを返します)、レコード4にはColorが割り当てられていないため(空のセットを返します)、Totalの値は4です。

COUNTを複数割当て属性で使用して、空のセットを除外する必要がある場合は、次の例に示すように、IS NOT EMPTY関数で集計ごとのWHERE句を使用します。
RETURN result AS
SELECT COUNT(Color) WHERE (Color IS NOT EMPTY) AS Total
GROUP BY Size
この文の結果は次のようになります。
Record 1: Size=small, Total=3
これは、レコード4の空のセットが数えられていないためです。

COUNT(1)の書式

COUNT(1)構文ではすべてのレコードが返されます。これには、NULL値を持つレコードも含まれます。たとえば、Endecaデータ・ドメイン内のデータ・レコードの数を知るには、次のようにします。
RETURN results AS
SELECT COUNT(1) AS recordCount
WHERE WineID IS NOT NULL
GROUP

文の結果は、データ・レコードの総数を表す整数になるはずです。WHERE句は、各レコードの主キー・プロパティがNULL以外の値を持つかどうかをチェックして、データ以外のレコード(原始レコードなど)をすべて除外します。