- case when then else end
CASE WHEN s.s_sex = '1' THEN '男' WHEN s.s_sex = '2' THEN '女' ELSE '其他' END as sex,
或者
CASE s.s_sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END as sex,
- row_number()over(partition by a.user_id order by a.start_dt) as rn
- Lag和Lead分析函数
Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据(Lag)和后N行的数据(Lead)作为独立的列。
嗯,反正每次看这些定义啥的都有点拗口,通俗点来说,就相当于表的自关联。
Hive 窗口函数之 lead() over(partition by ) 和 lag() over(partition by ) - 数据分析笔记(自用) - 博客园 (cnblogs.com)
- NVL函数
NVL(表达式1,表达式2)
如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。 该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型。
- where中的NOT函数
- 从timestamp格式中提取小时等信息。
注意timestamp格式如:2021/4/1 0:18:04
时间戳格式的数字如:1565858389
如果要从timestamp中提取小时等信息需要先转化为时间戳然后再进行提取:
select from_unixtime(cast(unix_timestamp('2019-08-15 16:40:00') as bigint), 'HH')
hive 时间戳函数之unix_timestamp,from_unixtime - 小二货儿007 - 博客园 (cnblogs.com)