LIMIT BY 句
LIMIT n BY expressions
句を使用したクエリは、各異なる値の expressions
に対して最初の n
行を選択します。LIMIT BY
のキーには任意の数の expressions を含めることができます。
ClickHouse は以下の構文のバリエーションをサポートしています:
LIMIT [offset_value, ]n BY expressions
LIMIT n OFFSET offset_value BY expressions
クエリ処理中、ClickHouse はソートキーによって順序付けられたデータを選択します。ソートキーは、ORDER BY 句を使用して明示的に設定するか、テーブルエンジンのプロパティとして暗黙的に設定されます(ORDER BY を使用している場合のみ行の順序が保証され、そうでない場合はマルチスレッド処理のため行ブロックの順序は保証されません)。その後、ClickHouse は LIMIT n BY expressions
を適用し、各異なる expressions
の組み合わせに対して最初の n
行を返します。OFFSET
が指定されている場合、各異なる expressions
の組み合わせに属するデータブロックについて、ClickHouse はブロックの先頭から offset_value
行をスキップし、結果として最大 n
行を返します。offset_value
がデータブロック内の行数より大きい場合、ClickHouse はブロックからゼロ行を返します。
LIMIT BY
句でカラム名の代わりにカラム番号を使用したい場合は、設定 enable_positional_arguments を有効にします。
例
サンプルテーブル:
クエリ:
SELECT * FROM limit_by ORDER BY id, val LIMIT 2 OFFSET 1 BY id
クエリは同じ結果を返します。
次のクエリは、最大 100 行で各 domain, device_type
ペアの上位 5 件のリファラーを返します(LIMIT n BY + LIMIT
)。