.-ALL------. >>-COUNT_BIG--(----+-+----------+---expression--+--)----------->< | '-DISTINCT-' | '-*--------------------------'
スキーマは SYSIBM です。
COUNT_BIG 関数は、一連の行または値の行の数または値の数を戻します。 これは COUNT とほぼ同じですが、 結果が整数の最大値より大きくなる場合がある点が異なります。
DISTINCT を使用する場合、expression の結果データ・タイプの文字ストリングとしての長さは 255 を超えてはならず、 漢字ストリング列としての長さは 127 を超えてはなりません。 expression の結果データ・タイプは、LONG VARCHAR、LONG VARGRAPHIC、BLOB、CLOB、DBCLOB、DATALINK、これらのタイプの特殊タイプ、 または構造タイプとすることはできません (SQLSTATE 42907)。
関数の結果は、精度 31 および位取り 0 の 10 進数です。 結果がヌル値になることはありません。
結果は、集合の行の数です。 NULL 値しか含まれない行は、カウントに含められます。
COUNT_BIG(DISTINCT expression) の引き数は、 値の集合です。 この関数は、引き数の値からヌル値と重複値を除いた値の集合に対して適用されます。 結果は、その集合の中のヌル以外の異なる値の数です。
COUNT_BIG(expression) または COUNT_BIG(ALL expression) の引き数は、値の集合です。 この関数は、引き数の値からヌル値を除いて求めた値の集合に対して適用されます。 結果は、その集合の中のヌルでない値の数です (重複値も含む)。
例:
CREATE FUNCTION RICK.COUNT() RETURNS DECIMAL(15,0) SOURCE SYSIBM.COUNT_BIG(); SET CURRENT FUNCTION PATH RICK, SYSTEM PATH; SELECT COUNT(*) FROM EMPLOYEE;
ソースからの派生関数は、 COUNT(*) をサポートするパラメーターを指定せずに定義されていることに注意してください。 これが有効なのは、関数 COUNT を指定し、 関数の使用時に関数をスキーマ名で修飾しない場合だけです。 COUNT 以外の名前を使用して COUNT(*) と同じ結果を得るためには、 パラメーターを指定せずに関数を呼び出します。 したがって、RICK.COUNT が RICK.MYCOUNT として定義されている場合、 照会は以下のように書く必要があります。
SELECT MYCOUNT() FROM EMPLOYEE;
特定の列についてカウントを取る場合、 ソースからの派生関数はその列のタイプを指定する必要があります。 以下のステートメントによって作成されたソースからの派生関数は、 CHAR 列を引き数として取り、COUNT_BIG を使用してカウントを実行します。
CREATE FUNCTION RICK.COUNT(CHAR()) RETURNS DOUBLE SOURCE SYSIBM.COUNT_BIG(CHAR()); SELECT COUNT(DISTINCT WORKDEPT) FROM EMPLOYEE;