1、nvl 函数
NVL(表达式 1, 表达式 2)
如果表达式 1 为空值, NVL 返回值为表达式 2 的值, 否则返回表达式 1 的值。 该函数的目的是把一个空值(null) 转换成一个实际的值。 其表达式的值可以是数字型、 字符型和日期型。 但是表达式 1 和表达式 2 的数据类型必须为同一个类型。
如果员工的 comm 为 NULL,则用-1 代替
2、CASE WHEN THEN ELSE END
在Case函数中Else部分的默认值是NULL,Case具有两种格式。简单Case函数和Case搜索函数
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
3、行转列相关函数
3.1 concat 函数
CONCAT(string A/col, string B/col…):返回输入字符串连接后的结果,支持任意个输入字符串
concat 函数在连接字符串的时候, 只要其中一个是 NULL, 那么将返回 NULL。
concat 函数不需要指定分隔符
3.2 concat_ws 函数
concat_ws 函数第一个参数是分隔符(必须指定),在连接字符串的时候,只要有一个字符串不是 NULL,就不会返回 NULL。
3.3 collect_set&collect_list函数
两函数区别collect_set会对数据进行去重
按用户分组,取出每个用户每天看过的所有视频的名字
select username, collect_list(video_name) from t_visit_video group by username ;
select username, collect_set(video_name) from t_visit_video group by username;
4、日期处理函数
4.1、 date_format 函数(根据格式整理日期)
4.2、 date_add 函数(日期加天数),当第二个参数是负数时就变成减了
4.3、date_sub 函数(日期减天数),第二个参数是负数时就变成加了
4.4、 next_day 函数
取当前天的下一个周一
说明: 星期一到星期日的英文(Monday, Tuesday、 Wednesday、 Thursday、 Friday、 Saturday、 Sunday)
4.5、 last_day 函数(求当月最后一天日期)
4.6、datediff 函数 (两个日期相差的天数)
4.7、add_months 函数 (日期加减月)
5、str_to_map 函数
语法描述::STR_TO_MAP(VARCHAR text, VARCHAR listDelimiter, VARCHAR keyValueDelimiter)
功能描述:使用 listDelimiter 将 text 分隔成 K-V 对, 然后使用 keyValueDelimiter 分隔每个 K-V 对,组装成 MAP 返回。 默认 listDelimiter 为( , ) , keyValueDelimiter 为(=) 。