1、arrayMap(fun1,arr1)使用
第一个参数是一个 lambda 函数,第二个参数是一个集合
eg、select arrayMap(x->x+1,[1,2,3])
对集合中每个数+1
2、arrayJoin(arr1) 将集合由行转列
eg、 select arrayJoin([1,2,3])
eg、select arrayJoin(arrayMap(x->x+1,[1,2,3]))
3、Tuple元组,ClickHouse数据库中的一种数据类型,一个字段中存储由不同数据类型组成的元组
eg、select tuple(1,‘A’)
4、range([start, ] end [, step])
start:起始值
end:结束值
step:步长
eg、select range(1,10,3)
5、日期函数
toDateTime(‘2016-06-15 23:00:00’) AS time,
toDate(time) AS date_local,
toDate(time, ‘Asia/Yekaterinburg’) AS date_yekat, 指定时区
toString(time, ‘US/Samoa’) AS time_samoa
对日期操作加时间多少单位有second
minute
hour
day
week
month
quarter
year
date_add(unit, value, date)
SELECT date_add(YEAR, 3, toDate(‘2018-01-01’));
6、map(key,value,…) map函数可以存储一个对象
SELECT map(‘key1’,1,‘k2’,2)
7、groupArray()根据某个字段设置为1组,配合map函数可以将不同班级的学生进行班级分组,同一个班级的学生放在一个集合中作为一个字段
有一个原表数据
转成一条记录将日期作为一列值为对应的pass字段(列转行)
形如
eg、select eq_name,eq_code, groupArray(map(‘hourRange’, toString(hour_range), ‘pass’, toString(pass))) as list from hour_table group by eq_name,eq_code order by eq_name
list形如这样一个对象集合list是一个集合存放了具有属性hourRange,pass的对象稽核部
8、select 查询保留指定位数
eg、select toDecimalString(0, 2) ,toDecimalString(0.1, 2)
10 两张表关联A是一个全量表,B是一个部分表具有值字段,当A和B表设备和日期相等则使用B字段的值,无法B字段的设备无对象日期则A的该时间点字段赋值0,使用left join 配合COALESCE(null,1)函数
COALESCE(参数1,参数2,参数3…)函数使用,只要前面一个参数是null,则结果是用接下来参数
eg、COALESCE(0 ,1,2) 结果为0, select COALESCE(null ,1,2) 结果为1, select COALESCE(null ,null,2)结果为2