|NO.Z.00042|——————————|BigDataEnd|——|Hadoop&OLAP_ClickHouse.V14|——|ClickHouse.v14|ClickHouse语法|LimitBy|Having子句|
一、LIMIT BY子句
### --- LimitBy
~~~ 与查询 LIMIT n BY expressions 子句选择第一个 n 每个不同值的行 expressions.
~~~ LIMIT BY 可以包含任意数量的 表达式.
~~~ ClickHouse支持以下语法变体:
~~~ LIMIT [offset_value, ]n BY expressions
~~~ LIMIT n OFFSET offset_value BY expressions
~~~ 在查询处理过程中,ClickHouse会选择按排序键排序的数据。
~~~ 排序键使用以下命令显式设置 ORDER BY 子句或隐式作为表引擎的属性。
~~~ 然后ClickHouse应用 LIMIT n BY expressions 并返回第一 n 每个不同组合的行 expressions.
~~~ 如果 OFFSET 被指定,则对于每个数据块属于一个不同的组合 expressions,
~~~ ClickHouse跳过 offset_value 从块开始的行数,并返回最大值 n 行的结果。
~~~ 如果 offset_value 如果数据块中的行数大于数据块中的行数,ClickHouse将从该块返回零行。
~~~ # 注
~~~ LIMIT BY 是不相关的 LIMIT. 它们都可以在同一个查询中使用。
二、示例
### --- 例样例表:
~~~ # 创建表
hadoop01 :) CREATE TABLE limit_by(id Int, val Int) ENGINE = Memory;
~~~ # 加载数据
hadoop01 :) INSERT INTO limit_by VALUES (1, 10), (1, 11), (1, 12), (2, 20), (2, 21);
~~~ # 查询数据
hadoop01 :) SELECT * FROM limit_by ORDER BY id, val LIMIT 2 BY id;
┌─id─┬─val─┐
│ 1 │ 10 │
│ 1 │ 11 │
│ 2 │ 20 │
│ 2 │ 21 │
└────┴─────┘
~~~ # 查询数据
hadoop01 :) SELECT * FROM limit_by ORDER BY id, val LIMIT 1, 2 BY id;
┌─id─┬─val─┐
│ 1 │ 11 │
│ 1 │ 12 │
│ 2 │ 21 │
└────┴─────┘
### --- 该 SELECT * FROM limit_by ORDER BY id, val LIMIT 2 OFFSET 1 BY id 查询返回相同的结果。
~~~ 以下查询返回每个引用的前5个引用 domain, device_type 最多可与100行配对 (LIMIT n BY + LIMIT).
hadoop01 :) SELECT domainWithoutWWW(URL) AS domain,
domainWithoutWWW(REFERRER_URL) AS referrer,
device_type, count() cnt FROM hits
GROUP BY domain, referrer, device_type
ORDER BY cnt DESC LIMIT 5 BY domain, device_type
LIMIT 100;
二、HAVING 子句
### --- Having子句
~~~ 允许过滤由 GROUP BY 生成的聚合结果. 它类似于 WHERE ,
~~~ 但不同的是 WHERE 在聚合之前执行,而 HAVING 之后进行。
~~~ 可以从 SELECT 生成的聚合结果中通过他们的别名来执行 HAVING 子句。
~~~ 或者 HAVING 子句可以筛选查询结果中未返回的其他聚合的结果。
~~~ # 限制
~~~ HAVING 如果不执行聚合则无法使用。 使用 WHERE 则相反。
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」