SELECT min(id) AS minId, max(id) AS maxId, bucket_num, FROM (
SELECT id, toUInt32(rowNumberInAllBlocks() / :rows) AS bucket_num FROM (
SELECT id
FROM <tableName>
WHERE date_time >= :minDateTime
AND date_time <= :maxDateTime
ORDER BY id ASC))
GROUP BY bucket_num
ORDER BY bucket_num DESC
2条答案
按热度按时间cx6n0qe31#
我们终于在clickhouse电报频道的帮助下解决了这个问题。在此处放置,以防其他人使用此信息:
v64noz0r2#
我不熟悉clickhouse,但我可能建议使用模块化数学来分割数据。因此,您可以选择id%n,其中n是所需的块数,并按id%n分组,选择max和min id。
编辑:这假设您有完全连续的int id。否则,您需要为每一行指定一个行号。