ClickHouse数据查询

本文详细介绍了ClickHouse的查询语法,包括WITH子句、SAMPLE子句、PREWHERE子句、ARRAY JOIN子句、LIMIT BY子句和INTO OUTFILE子句。特别讨论了这些子句在ClickHouse中的特性和用法,例如数据采样的幂等性和近似性,以及PREWHERE子句对MergeTree表引擎的优化。此外,还展示了如何查看和理解查询执行计划。
摘要由CSDN通过智能技术生成

ClickHouse数据查询

前言

ClickHouse数据导入 一文中介绍了导入数据到ClickHouse数据表中,本文描述如何对ClickHouse中的数据进行查询。

查询语法

参见:

[WITH expr_list|(subquery)]
SELECT [DISTINCT] expr_list
[FROM [db.]table | (subquery) | table_function] [FINAL]
[SAMPLE sample_coeff]
[ARRAY JOIN ...]
[GLOBAL] [ANY|ALL|ASOF] [INNER|LEFT|RIGHT|FULL|CROSS] [OUTER|SEMI|ANTI] JOIN (subquery)|table (ON <expr_list>)|(USING <column_list>)
[PREWHERE expr]
[WHERE expr]
[GROUP BY expr_list] [WITH TOTALS]
[HAVING expr]
[ORDER BY expr_list] [WITH FILL] [FROM expr] [TO expr] [STEP expr]
[LIMIT [offset_value, ]n BY columns]
[LIMIT [n, ]m] [WITH TIES]
[UNION ALL ...]
[INTO OUTFILE filename]
[FORMAT format]

可以看到ClickHouse的SELECT语句的语法和通用的SQL的SELECT语句非常类似,包括:

  • SELECT: 指定返回结果字段

  • DISTINCT:去重

  • FROM: 指定要查询的表或子查询

  • JOIN:表连接,支持内连接和外连接、左连接和右连接

  • WHERE:筛选条件

  • GROUP BY:分组,和聚合函数一起使用

  • HAVING:分组后筛选

  • ORDER BY:排序

  • LIMIT:限制返回记录数

  • UNION ALL:并集;ClickHouse目前只支持UNION ALL,还不支持UNION

ClickHouse的SELECT语句中也有一些特殊的用法:

  • WITH: 设置查询中要用到的变量
  • SAMPLE: 数据取样,类似Pandas库的sample()函数
  • PREWHERE: 预筛选,起到提升性能作用
  • ARRAY JOIN:数组连接,用来展开数组或嵌套字段,一行变多行
  • LIMIT BY: 分组,再从每组中取前n条记录
  • INTO OUTFILE: 到处表数据到文件,再用FORMAT指定文件格式

查询子句

下面只说明ClickHouse中特有的数据查询子句。

WITH子句

参见:

-- 在WITH子句中定义一个变量并赋值,然后在SELECT子句中通过别名使用该变量
with '2014-03-17' as dt \
select count(1) from hits_v1 where EventDate = dt;


-- 在WITH子句中定义一个函数,然后在SELECT子句中通过别名使用该函数
with round(Duration / 60)as duration_minutes \
select StartDate, max(duration_minutes
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值