LIMIT BY子句
一个使用LIMIT n BY expressions
从句的查询会以去重后的expressions
结果分组,每一分组选择前n
行。LIMIT BY
指定的值可以是任意数量的表达式。
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
,那么对于每一分组,ClickHouse会跳过前offset_value
行,接着返回前n
行。如果offset_value
大于某一分组的行数,ClickHouse会从分组返回0行。
Note
LIMIT BY
与LIMIT没有关系。它们可以在同一个查询中使用。
例
样例表:
查询:
与 SELECT * FROM limit_by ORDER BY id, val LIMIT 2 OFFSET 1 BY id
返回相同的结果。
以下查询返回每个domain,device_type
组合的前5个refferrer,总计返回至多100行(LIMIT n BY + LIMIT
)。