1、取随机数函数:rand()

语法: rand(),rand(int seed) 返回值: double 解释: 返回一个0到1范围内的随机数。
如果指定seed,则会得到一个稳定的随机数序列

select rand();

随机函数jsp好法式员年夜数据进修路线hive内部函数 RESTful API

select rand(10);

2、分割字符串函数:split(str,splitor)

语法: split(string str, string pat) 返回值: array 解释: 按照pat字符串分割str,会返回分割后的字符串数组,把稳分外分割符的转义

select split(5.0,\"大众\.\"大众)[0];

select split(rand(10)100,\公众\.\公众)[0];

3、字符串截取函数:substr,substring

语法: substr(string A, int start),substring(string A, int start) 返回值: string 解释:返回字符串A从start位置到结尾的字符串

语法: substr(string A, int start, int len),substring(string A, int start, int len) 返回值: string 解释:返回字符串A从start位置开始,长度为len的字符串

select substr(rand()100,0,2);

select substring(rand()100,0,2);

4、If函数:if

语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull) 返回值: T 解释: 当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull

select if(100>10,\"大众this is true\公众,\公众this is false\"大众);

select if(2=1,\"大众男\"大众,\"大众女\"大众);

select if(1=1,\"大众男\公众,(if(1=2,\"大众女\公众,\"大众不知道\"大众)));

select if(3=1,\公众男\"大众,(if(3=2,\"大众女\"大众,\公众不知道\"大众)));

5、条件判断函数:CASE

第一种格式:

语法: CASE WHEN a THEN b [WHEN c THEN d] [ELSE e] END 返回值: T 解释:如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回e

第二种格式:

语法: CASE a WHEN b THEN c [WHEN d THEN e] [ELSE f] END 返回值: T 解释:如果a即是b,那么返回c;如果a即是d,那么返回e;否则返回f

select

case 6

when 1 then \公众100\"大众

when 2 then \公众200\"大众

when 3 then \"大众300\公众

when 4 then \公众400\公众

else \"大众others\公众

end

;

##创建表

create table if not exists cw(

flag int

)

;

load data local inpath '/home/flag' into table cw;

##第一种格式

select

case c.flag

when 1 then \"大众100\公众

when 2 then \"大众200\"大众

when 3 then \公众300\公众

when 4 then \"大众400\"大众

else \公众others\"大众

end

from cw c

;

##第二种格式

select

case

when 1=c.flag then \公众100\"大众

when 2=c.flag then \"大众200\"大众

when 3=c.flag then \公众300\"大众

when 4=c.flag then \"大众400\公众

else \"大众others\公众

end

from cw c

;

6、正则表达式更换函数:regexp_replace

语法: regexpreplace(string A, string B, string C) 返回值: string 解释:将字符串A中的符合java正则表达式B的部分更换为C。
把稳,在有些情形下要利用转义字符,类似oracle中的regexp
replace函数

select regexp_replace(\公众1.jsp\"大众,\公众.jsp\公众,\"大众.html\公众);

7、类型转换函数: cast

语法: cast(expr as ) 返回值: Expected \公众=\公众 to follow \公众type\"大众 解释: 返回转换后的数据类型

select 1;

select cast(1 as double);

select cast(\公众12\"大众 as int);

8、字符串连接函数:concat;带分隔符字符串连接函数:concat_ws

语法: concat(string A, string B…) 返回值: string 解释:返回输入字符串连接后的结果,支持任意个输入字符串

语法: concat_ws(string SEP, string A, string B…) 返回值: string 解释:返回输入字符串连接后的结果,SEP表示各个字符串间的分隔符

select \公众千峰\"大众 + 1603 + \公众班级\"大众;

select concat(\"大众千峰\"大众,1603,\公众班级\公众);

select concat_ws(\公众|\"大众,\公众千峰\"大众,\"大众1603\公众,\公众班级\公众);

9、排名函数:

rownumber(): 名次不并列 rank():名次并列,但空位 denserank():名次并列,但不空位

##数据

idclass score

1190

2185

3187

4160

5282

6270

7267

8288

9293

11901

31872

21853

92931

82882

52823

create table if not exists uscore(

uid int,

classid int,

score double

)

row format delimited fields terminated by '\t'

;

load data local inpath '/home/uscore' into table uscore;

select

u.uid,

u.classid,

u.score

from uscore u

group by u.classid,u.uid,u.score

limit 3

;

select

u.uid,

u.classid,

u.score,

row_number() over(distribute by u.classid sort by u.score desc) rn

from uscore u

;

取前三名

select

t.uid,

t.classid,

t.score

from

(

select

u.uid,

u.classid,

u.score,

row_number() over(distribute by u.classid sort by u.score desc) rn

from uscore u

) t

where t.rn < 4

;

查看三个排名差异

select

u.uid,

u.classid,

u.score,

row_number() over(distribute by u.classid sort by u.score desc) rn,

rank() over(distribute by u.classid sort by u.score desc) rank,

dense_rank() over(distribute by u.classid sort by u.score desc) dr

from uscore u

;

10.聚合函数:

min() max() count() count(distinct ) sum() avg()

count(1):不管正行有没有值,只要涌现就累计1 count():正行值只要有一个不为空就给类计1 count(col):col列有值就累计1 count(distinct col):col列有值并且不相同才累计1

11.null值操作

险些任何数和 NULL操作都返回NULL

select 1+null;

select 1/0;

select null%2;

12.等值操作

select null=null; #null

select null<=>null;#true