赞
踩
返回date1与data2之间的天数;
返回start_day前num_days的日期;
timestampdiff(year|month|day|hour|minute|second,date1,date2)
#对于比较的两个时间,时间小的放在前面,时间大的放在后面
FIRST_VALUE()函数用于返回当前第一个值
- SELECT *,
- FIRST_VALUE(order_price) OVER (PARTITION BY user_id ORDER BY order_price) AS firstvalue
- FROM order_content;
LAST_VALUE()函数用于返回当前最后一个值
last_value(字段, true): 会跳过 为null值的数据,并将最后一个值填充进去。
- SELECT *,
- LAST_VALUE(order_price) OVER (PARTITION BY user_id ORDER BY order_price)AS lastvalue
- FROM order_content;
这两个函数可以查询我们得到的结果集上下偏移相应行数的相应的结果
lag():查询当前行向上偏移n行对应的结果
该函数有三个参数:第一个为待查询的参数列名,第二个为向上偏移的位数,第三个参数为超出最上面边界的默认值。
- -- 查询向上偏移 1 位的年龄
-
- SELECT user_id,
- user_age,
- lag(user_age, 1, 0) over(ORDER BY user_id) RESULT
- FROM user_info;
lead()函数:查询当前行向下偏移n行对应的结果
该函数有三个参数:第一个为待查询的参数列名,第二个为向下偏移的位数,第三个参数为超出最下面边界的默认值。
- --查询向下偏移 2 位的年龄
-
- SELECT user_id,
- user_age,
- lead(user_age, 2, 0) over(ORDER BY user_id)
- FROM user_info;
对于Oracle数据库,一般经常对空值处理的函数为NVL,而mysql中常用到的是ifnull,这两个函数相似,其实都是由一个函数衍生而来,那就是COALESCE()函数。
COALESCE()函数 定义:返回列表中第一个非null表达式的值。如果所有表达式求值为null,则返回null
COALESCE()函数有两种用法:
COALESCE ( expression1, expression2 );
COALESCE ( expression1, expression2, ... expression-n );
其中第一种就相当于Oracle中的nvl或者mysql中的ifnull,写成表达式的形式为:
CASE WHEN expression1 IS NOT NULL THEN expression1 ELSE expression2 END;
第二种可以包含n个表达式,表示如果第一个不为空取第一个,否则判断下一个,以此类推,如果全部为空,则返回null值。
需注意:vertica中空字符串跟null值不一样
单列Explode
需求:将student这一列中数据由一行变为多行(使用split和explode,并结合lateral view函数实现)
- select
- class,student_name
- from
- default.class_info
- lateral view explode(split(student,',')) t as student_name;
需求:想要给每班的每个同学按照顺序来一个编号(使用posexplode函数)
- select
- class,student_index + 1 as student_index,student_name
- from
- default.class_info
- lateral view posexplode(split(student,',')) t as student_index,student_name;
用法:LATERAL VIEW udtf(expression) tableAlias AScolumnAlias
解释:用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。lateral view首先为原始表的每行调用UDTF,UDTF会报一行拆分成一行或者多行,lateral view再把结果组合,产生一个支持别名表的虚拟表。
CONCAT(string A/col, string B/col…):返回输入字符串连接后的结果,支持任意个输入字符串;
CONCAT_WS(separator, str1, str2,...):
它是一个特殊形式的 CONCAT()。第一个参数剩余参数间的分隔符。
分隔符可以是与剩余参数一样的字符串。
如果分隔符是 NULL,返回值也将为 NULL.
这个函数会跳过分隔符参数后的任何 NULL 和空字符串。
分隔符将被加到被连接的字符串之间;
注意: CONCAT_WS must be "string or array<string>
COLLECT_SET(col):它的主要作用是将某字段的值进行去重汇总,产生array类型字段。
COLLECT_LIST(col): 它的主要作用是将某字段的值进行不去重汇总,产生array类型字段。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。