ClickHosue 常用函数

1.日期类函数

1.1 日期或时间日期生成函数

 

函数

用途

举例

返回结果

返回类型

now() 

生成当前时间日期

now()

2020-08-14 23:46:34

DateTime

today() 

生成今天的日期

today() 

2020-08-14

Date

yesterday() 

生成昨天的日期

yesterday()

2020-08-13

Date

1.2  时间或日期截取函数(to)-返回非日期

 

函数

用途

举例

返回结果

返回类型

toYear()

取日期或时间日期的年份

toYear(toDateTime('2020-08-14 11:12:13’));

toYear(toDate('2020-08-14’));

toYear(now());

2020;

2020;

2020;

UInt16;

UInt16;

UInt16

toMonth() 

取日期或时间日期的月份

toMonth(toDateTime('2020-08-13 11:12:13’));

toMonth(toDate('2020-08-13')) 

8;

8;

UInt8;

UInt8

toDayOfMonth()  

取日期或时间日期的天(1-31)

toDayOfMonth(now())

14

UInt8

toDayOfWeek() 

取日期或时间日期的星期

toDayOfWeek(now());

6

UInt8

toHour() 

取时间日期的小时 

toHour(toDateTime('2020-08-13 11:12:13'))

11

UInt8

toMinute()  

取时间日期的分钟

toMinute(toDateTime(‘2020-08-13 11:12:13’)) 

12

UInt8

toSecond()  

取时间日期的秒

toSecond(toDateTime(‘2020-08-13 11:12:13’)) 

13

UInt8

toMonday() 

取时间日期最近的周一(返回日期)

toMonday(toDate('2020-08-13'));

2020-08-10

Date

toTime() 

将时间日期的日期固定到某一天,保留原始时间  

toTime(toDateTime(‘2020-08-13 11:12:13’))   

1970-01-02 11:12:13

DateTime('Asia/Chungking')

1.3 时间或日期截取函数(toStartOf)—— 返回日期

 

函数

   用途      

举例

返回结果

返回类型

toStartOfMonth()

取日期或时间日期的月份的第一天,返回日期。

toStartOfMonth(toDateTime('2020-08-18 11:12:13'))

2020-08-01

Date

toStartOfQuarter()

 取日期或时间日期的季度的第一天,返回日期

toStartOfQuarter(toDateTime('2018-12-11 11:12:13'))

2018-10-01

Date

toStartOfYear()

 取日期或时间日期的年份的第一天,返回日期

toStartOfYear(toDateTime('2020-08-18 11:12:13'));

toStartOfYear(toDate('2020-08-18'))

2020-01-01;

2020-01-01

Date;

Date

toStartOfMinute()

截取时间日期到分钟(之后归零),返回日期

toStartOfMinute(toDateTime('2020-08-18 11:12:13'))

2020-08-18 11:12:00

DateTime('Asia/Chungking')

toStartOfFiveMinute()

截取时间日期到最近的5的倍数分钟(之后归零),返回日期 

toStartOfFiveMinute(toDateTime('2020-08-18 11:12:13'))

2020-08-18 11:10:00

DateTime('Asia/Chungking')

toStartOfFifteenMinutes

 截取时间日期到最近的15的倍数分钟(之后归零),返回日期 

toStartOfFifteenMinutes(toDateTime('2020-08-18 11:12:13'))

2020-08-18 11:00:00

DateTime('Asia/Chungking')

toStartOfHour()

截取时间日期到小时(之后归零),返回日期

toStartOfHour(toDateTime('2020-08-18 11:12:13')

2020-08-18 11:00:00

DateTime('Asia/Chungking')

toStartOfDay() 

截取时间日期到天(之后归零),返回日期

toStartOfDay(toDateTime('2020-08-18 11:12:13'))

2020-08-18 00:00:00

DateTime('Asia/Chungking')

timeSlot()

将时间日期中,分钟大于等于30的归于30,分钟数小于30的归为00

timeSlot(toDateTime('2020-08-18 11:33:13’))

2020-08-18 11:30:00;

 

DateTime('Asia/Chungking')

 

2.类型转化类函数

2.1 精度保留(非四舍五入)

 

函数       

用途

举例    

 返回结果

 返回类型

toDecimal32('whdwjfe',8)

将数值型或者含有非数字的字符串进行精度保留 

toDecimal32(23.12291, 3)

23.122

Decimal(9, 3)

toDecimal64(‘whdwjfew’,8)  

将数值型或者含有非数字的字符串进行精度保留

toDecimal64(23.12291,3)

23.122

Decimal(18, 3)

toDecimal128(‘whdwjfew’,8) 

将数值型或者含有非数字的字符串进行精度保留

toDecimal128(23.12291, 3)

23.122

Decimal(38, 3)

2.2 字符串转化为整数(非整数的字符串返回0)

 

函数       

用途

举例    

  返回结果

 返回类型

toUInt8OrZero()

将无符号整数字符型转化为整数型,否则返回0

toUInt8OrZero(‘123’);

toUInt8OrZero(‘123.12’)  

123;

0

UInt8;

UInt8

toInt8OrZero()

将整数字符型转化为整数型,否则返回0  

toInt8OrZero('123’);

toInt8OrZero('-123');

123;

-123

Int8;

Int8

toFloat32OrZero() 

将数值字符串型转化为数值型,注意:从toFloat32OrZero开始,丢32的没有对应的函数

toFloat32OrZero('-123’);

 

123;

 

Float32;

 

 

2.3 日期与时间日期转化

 

函数       

用途

举例    

  返回结果

 返回类型

toDate()

将字符型日期转化为日期型 

 toDate('2020-08-18')

2020-08-18

Date

toDateTime()  

将字符型时间日期转化为时间日期型 

toDateTime('2020-08-18 10:10:00')

2020-08-18 10:10:00

DateTime

 

2.4 转化为字符型

 

函数       

用途

举例    

  返回结果

 返回类型

toString()

将数值型、字符型、日期等转化为字符型

toString(‘2020-08-18’);

toString(‘123’)  

2020-08-18;

123

String

2.5 查看数据类型

 

函数       

用途

举例    

  返回结果

 返回类型

toTypeName()

返回数据的类型

toTypeName(toString(‘123’))

123

String

 

3.字符串操作

3.1 基本字符串操作

 

函数       

用途

举例    

  返回结果

 返回类型

empty() 

判断字符串是空为1,否则为0 

empty(‘’);

empty('123a')

1;

0;

UInt8;

UInt8

notEmpty()  

判断字符串是非空为1,否则为0

notEmpty(’’);

notEmpty(‘123a’) 

0;

1

UInt8;

UInt8

length() 

返回字符串的长度

length(’’);

length(‘123a’)

0;

4

UInt8;

UInt8

lower() 

将字符串转为小写

lower(‘aBc’)  

abc

String

upper()

将字符串转为大写

upper(‘aBc’) 

ABC

String

reverse()

将字符串反转

 reverse(‘abc’) 

cba

String

substring(s, offset, length) 

字符串截取   

substring(‘123abcABC’, 2, 3)  

23a

String

appendTrailingCharIfAbsent(s, c) 

如果字符串s非空,则将s后追加一个字符c(s最后一个字符与c不同),否则不处理

appendTrailingCharIfAbsent('123abc', 'b’);

appendTrailingCharIfAbsent('123abc', 'c')

123abcb;

123abc

String;

String

 

3.2 字符串查找

 

函数       

用途

举例    

  返回结果

 返回类型

match(haystack,pattern) 

字符串正则匹配,返回0或1

match(‘avhsca’,'vh’)  

1

UInt8

extract(haystack,pattern)

返回匹配到的第一个子串

extract('iioomAj12123124OOBJB', 'A')

A

String

like(haystack,pattern) 

 匹配到的数据返回1,否则返回0

like('avhsca','%vh%')

1

UInt8

notLike(haystack, pattern)

与like()函数相反 

notLike(‘avhsca’,’%vh%’

0

UInt8

 

3.3 字符串替换

 

函数       

用途

举例    

  返回结果

 返回类型

replaceOne(haystack,pattern,replacement) 

 替换第一个匹配到的pattern 

replaceOne('asd123cbbj464sd', 'sd', '-')

a-123cbbj464sd

String

replaceAll(haystack,pattern,replacement)

替换所有匹配到的pattern 

replaceOne(‘asd123cbbj464sd’, ‘sd’, ‘-’) 

a-123cbbj464-

String

replaceRegexpOne(haystack, pattern, replacement)  

正则匹配替换第一个匹配到的pattern

replaceRegexpOne(‘Hello, World!’, ‘o’, '- ')   

Hell- , World!

String

replaceRegexpAll(haystack,pattern,replacement) 

正则匹配替换所有匹配到的pattern

 replaceRegexpAll(‘Hello, World!’, ‘^’, 'here: ')

hereHello, World!

String

 

3.4 字符串分割

 

函数       

用途

举例    

  返回结果

 返回类型

splitByChar(separator, s) 

以单个字符分割字符串

splitByChar('-','qw-asaf-asfqw-2312-asd')

['qw','asaf','asfqw','2312','asd']

Array(String)

splitByString(separator, s) 

以单个或多个字符分割字符串

splitByString('-a', 'qw-asaf-asfqw-2312-asd')

['qw','saf','sfqw-2312','sd']

Array(String)

 

 

 

 

 

 

3.5 字符串拼接

 

函数       

用途

举例    

  返回结果

 返回类型

concat(s1,s2,…) 

将字符串拼接 

concat('123', 'abc', 'ABC')

123abcABC

String

 

4.算数函数

函数       

用途

举例    

  返回结果

 返回类型

plus()

求和

plus(12, 21)

33

UInt16

minus()

差值

minus(10, 5)

5

UInt16

multiply()

multiply(12, 2)

24

UInt16

divide()

平均值

divide(12, 4);

divide(10, 3);

divide(10, 0);

divide(0, 0);

intDivOrZero(10, 0)

3;

3.3333333;

-inf;

nan;

0

UInt16;

Float64;

Float64;

Float64;

UInt8

modulo()

求余数

modulo(10, 3);

modulo(10.5, 3);

1;

1

UInt8

negate()

取反

negate(10)

-10

UInt8

abs

绝对值

abs(-10)

10

UInt8

gcd

最大公约数

gcd(12, 24)

12

UInt8

lcm

最小公倍数

lcm(12, 24)

24

UInt8

 

5.比较函数

     比较函数(始终返回0表示false 或 1表示true)

函数       

用途

举例    

  返回结果

 返回类型

 

比较函数

SELECT 12 == 12, 12 != 10, 12 == 132, 12 != 12, 12 <> 12;

1;1;0;0;0

UInt8

equals(),notEquals(),equals(),notEquals()

比较函数

SELECT equals(12, 12), notEquals(12, 10), equals(12, 10), notEquals(12,123);

1;1;0;0

UInt8

greater()

前者是否大于后者

SELECT greater(12, 10), greater(10, 12), greater(12, 12);

1;0;0

UInt8

greaterOrEquals()

前者是否大于或等于后者

SELECT greaterOrEquals(12,10), greaterOrEquals(12,12);

1;1

UInt8

less()

前者是否小于后者

SELECT less(12, 21), less(12, 10), less(120, 120);

1;0;0

UInt8

lessOrEquals()

前世是否小于或等于或者

SELECT lessOrEquals(12, 120), lessOrEquals(12, 12);

1;1

UInt8

 

6.逻辑函数

    逻辑操作符(返回0表示false 或 1表示true)

 

函数       

用途

举例    

  返回结果

 返回类型

==, !=

逻辑操作符

SELECT 12==12 or 12!=10;

1

UInt8

not

逻辑操作符

SELECT not 12, not 0;

0;1

UInt8

or

函数表示法:或

SELECT or(equals(12, 12), notEquals(12, 10));

1

UInt8

and

函数表示法:且

SELECT and(equals(12, 12), notEquals(12, 10));

1

UInt8

 

 

7. 条件语句

函数       

用途

举例    

  返回结果

 返回类型

if(cond,then,else)

条件输出

  if(1 > 2, ‘正确’, ‘错误’) 

错误

String

multiIf(cond_1, then_1, cond_2, then_2…else) 

多条件输出

 multiIf(1 > 2, ‘正确’, 2 < 0, ‘正确’, ‘错误’) 

错误

String

 

 

8. 数学函数

 

函数       

用途

举例    

  返回结果

 返回类型

e()

返回e的值 

e() 

2.718281828459045

Float64

pi()

返回pi的值

pi()

3.141592653589793

Float64

exp(x) 

返回e的x次方

exp(1) 

2.718281828459045

Float64

exp2(x)

返回2的x次方

exp2(2) 

4

Float64

exp10(x)

返回10的x次方

exp10(1) 

10

Float64

log(x)

返回log以e为底的对数值

log(e()) 

1

Float64

log2(x)

返回log以2为底的对数值

log2(2)

1

Float64

log10(x)

返回log以10为底的对数值 

 log10(100) 

2

Float64

sqrt(x)

对x开平方

 sqrt(4)  

2

Float64

cbrt(x) 

对x开立方

cbrt(8) 

2

Float64

pow(x, y)

返回x的y次方

 pow(2, 3) 

8

Float64

 

9. 舍入函数

 

函数       

用途

举例    

  返回结果

 返回类型

floor(x[, N])

向下取数

floor(123.883, 1);

 floor(123.883, -1)

123.8;

120

Float64;

Float64

ceil(x[, N]) 

向上取数

ceil(123.883, 1);

ceil(123.883, -1) 

123.9;

130

Float64;

Float64

round(x[, N])

    四舍五入

round(123.883, 1);

round(123.883, -1) 

123.9;

120

Float64;

Float64

 

 

10. 表操作

10.1 表连接操作

 

函数       

用途

举例    

  返回结果

 返回类型

INNER JOIN

内连接

 A表 INNER JOIN B表 

A表与B表的公共部分

 

LEFT OUTER JOIN            

左外连接

A 表 LEFT OUTER JOIN B表

A表不在B表中的部分

 

RIGHT OUTER JOIN 

右外连接

A 表 RIGHT OUTER JOIN B表

B表不在A表中的部分

 

FULL OUTER JOIN

全外连接

A 表 FULL OUTER JOIN B表

A与B表全部,没有为NULL

 

10.2 LIMIT操作

函数       

用途

举例    

  返回结果

 返回类型

LIMIT N 

查询N条数据,一般跟ORDER BY 连用

 ORDER BY hit DESC LIMIT 10  

按照hit列降排取前10

 

LIMIT N BY Clause

按照Clause列查询N条数据,一般跟ORDER BY 连用

SELECT date, domain, count(1) AS hit from db.tb where…GROUP BY date, domain,ORDER BY hit DESCLIMIT 10 BY date

取每天TOP10的域名

 

 

11.字典操作

函数       

用途

举例    

  返回结果

 返回类型

dictGetString()

字典映射

SELECT dictGetString('ck_abc_dic', 'ck_value', tuple(_abc)) AS abc

FROM DB.TABL

WHERE date=today()

LIMIT 10;

 

 

你可能感兴趣的:(ClickHouse)