メインコンテンツへスキップ
集約関数は、データベースの専門家が想定するとおり、通常の方法で動作します。 ClickHouse は、以下もサポートしています。

NULL の処理

集約では、NULL の argument はすべてスキップされます。集約 に複数の argument がある場合は、そのうち 1 つ以上が NULL である行は無視されます。 この規則には例外があります。関数 first_valuelast_value と、それらの別名 (それぞれ anyanyLast) に modifier RESPECT NULLS が続く場合です。たとえば、FIRST_VALUE(b) RESPECT NULLS です。 例: 次の table を考えます。
たとえば、y カラムの値の合計を求めるとします。
これで、groupArray 関数を使って y カラムから配列を作成できます。
groupArray は、結果の配列に NULL を含めません。 COALESCE を使うと、NULL を用途に応じた適切な値に置き換えられます。たとえば avg(COALESCE(column, 0)) では、集約時にカラムの値を使用し、NULL の場合は 0 を使用します。
また、NULL のスキップ動作を回避するには、Tupleを使うこともできます。NULL値だけを含むTupleNULLではないため、集約関数はそのNULL値があってもその行をスキップしません。
カラムが集計関数の引数として使用される場合、集計はスキップされることに注意してください。たとえば、count は、パラメータなし (count()) または定数パラメータ付き (count(1)) の場合、ブロック内のすべての行をカウントします (引数に GROUP BY カラムが含まれないため、その値には依存しません) 。一方、count(column) は、column が NULL ではない行数のみを返します。
また、RESPECT NULLS を指定した first_value の例を以下に示します。この例では、NULL 入力がそのまま考慮されるため、NULL であるかどうかにかかわらず、最初に読み取られた値が返されることがわかります。
最終更新日 2026年7月2日