自学内容网 自学内容网

ClickHouse | 查询

1 ALL 子句   

04bd975f3462d2cdd4161e6b9166eeb6.png

2 ARRAY JOIN    

f70a6a6fe1fa8ff929f927ab4e4dbdd7.png

46d4699154a0d0eb24e7f8115962c43a.png    

使用别名 :在使用时可以为数组指定别名,数组元素可以通过此别名访问,但数组本身则通过原始名称访问

0593c8933ee95d83c2ca9f0f30c887d2.png

3 DISTINCT子句  

DISTINCT不支持当包含有数组的列    

d71ee402b685554a57d369088b054fe8.png

4 FROM子句  

FROM 子句指定从以下数据源中读取数据:

1.表

2.子查询 

3.表函数

JOIN 和 ARRAY JOIN 子句也可以用来扩展 的功能FROM

子查询是另一个 可以指定在 后的括号内的查询。

FROM 子句可以包含多个数据源,用逗号分隔,这相当于在他们身上执行 CROSS JOIN

5 GROUP BY子句    

3e512928eacf379d2ad96345d4d0c1c7.png

6 HAVING 子句  

允许过滤由 GROUP BY 生成的聚合结果. 它类似于 WHERE ,但不同的是 在聚合之前执行,而 之后进行。

可以从 生成的聚合结果中通过他们的别名来执行 子句。或者 子句可以筛选查询结果中未返回的其他聚合的结果。

限制HAVING如果不执行聚合则无法使用

7 Join    

支持的联接类型

所有标准 SQL JOIN 支持类型:

INNER JOIN,只返回匹配的行。

LEFT OUTER JOIN,除了匹配的行之外,还返回左表中的非匹配行。

RIGHT OUTER JOIN,除了匹配的行之外,还返回右表中的非匹配行。

FULL OUTER JOIN,除了匹配的行之外,还会返回两个表中的非匹配行。

CROSS JOIN,产生整个表的笛卡尔积, “join keys” 是 不 指定。

dd5550b1158f57046433ae46d0e0ebe2.png

06d3696b1888987fd6061a3fc7fb7ced.png

semi: 类似于mysql的exists、in查询

anti :类似于mysql的not exists、not in查询

ASOF 是一种模糊连接,允许在连接键之后追加定义一个模糊连接的匹配条件asof_column

ASOF会先以 left.key = right.key 进行连接匹配,然后根据AND 后面的 closest_match_cond(也就是这里的a.time >= b.time)过滤出最符合此条件的第一行连接匹配的数据。

对 asof_colum 字段的使用有3点需要注意:    

必须包含一个有序的序列

asof_column 必须Int, UInt, Float, Date, DateTime, Decimal.

asof_column不能是数据表内的唯一字段,也就是说连接键(JOIN KEY)和asof_column不能是同一字段

4eb905223d058d97057482efb90aaf19.png

034318b735812418ae023be421a0e7db.png

 分布式join  

ClicHouse分布式join通常涉及到左右表为分布式表,分布式执行过程中需要将数据在节点间进行交换,将数据在节点间交换的动作在分布式执行计划中称为数据的流动streaming算子,ClickHouse支持的streaming算子有如下三种:

Broadcast Join 数据广播算子

Shuffer Join 数据重分布算子    

Colocate Join 数据存储在本地不需要进行分布式交换

GLOBAL JOIN  

717cfda4167f34d57f824ef7e1573835.png

4f2f11cbba4048f33a0e5442a8791797.png

0d0e0dfd4e11c92c0d4b1b3f74977fb0.png    

a7d2c69984e2a328865b82bff110e088.png

Colocate Join  

75781028f6a8f022d462da61006f77b6.png

1eb7cf92e2c203b6741005fbdc16c242.png    

8e333c0ee210859925ecde201fce1a34.png

223887eb941b79c58cd6bdbef4d0d66c.png58f9cb6fafc2b4f1305d24a83bca4ef4.png

8 Limit  

LIMIT m 允许选择结果中起始的 行。m

LIMIT n, m 允许选择个 从跳过第一个结果后的m 行。与 语法是等效的。mnLIMIT m OFFSET n

n 和 必须是非负整数。m

如果没有 ORDER BY 子句显式排序结果,结果的行选择可能是任意的和非确定性的    

9192155f56f80dbd67a5e89d5e8e862a.png

9 Limit by  

c8e211b112f1c2082020a49b12cc1b06.png

94d0b616d1001c77102be1ad66508bbf.png    

10 Order by  

82087b9f9baf3e504e495a995ef03bcc.png

11 Where prewhere  

.PREWHERE与WHERE不同之处在于:使用PREWHERE时,首先只会去PREWHERE指定的列字段数据,用于数据过滤的条件判断。在数据过滤之后再读取SELECT声明的列字段以补全其余属性。所以在一些场合下,PREWHERE相比WHERE而言,处理的数据更少,性能更高。

clickhouse提供了自动

.          

.          

化优化的功能,会在条件合适的情况下将where替换为prewhere。默认已经开启了此参数

.          

33858c87adf57f5e554d8117f16ba43b.png

12 Sample  

语法

f78dc50cbe85e93f960983064f329da3.png

ee296dca5e03444eefd0c315e13249a3.png

举例

38eaad5a1a1c873bf96dc8f996b8e3d6.png

a74c1f4a0b18dc703095e57ab608fdf0.png

13 Union all  

dd92bb5a27899609f8e4d572aa06fed8.png

结果列通过它们的索引进行匹配(在内部的顺序 ).如果列名称不匹配,则从第一个查询中获取最终结果的名称

对联合执行类型转换。例如,如果合并的两个查询具有相同的字段与非- 和 从兼容类型的类型,由此产生的 有一个 类型字段

14 WITH子句  

ef2588926d4b9d210e7c41d4a8b692e0.png    

55ad940383eb008ac153eb81f2112aeb.png 


原文地址:https://blog.csdn.net/sun2012930/article/details/142549765

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!