语法细节
关键字
像between和 >=作用类型是所有类型
group by order by
关于这些以及列别名的讨论,在官方wiki上就有。大体就是所有不是聚合函数的查询列,包括使用了函数的查询列必须和原封不动的以函数的形式出现在group中,同事他们在group 中还不能用别名
COALESCE
COALESCE(T v1, T v2, …) 这是一个可变参数列表,可以作用在很多的参数上。
返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL
特殊示例1
select empno,ename,job,mgr,hiredate,sal, COALESCE(comm, 0),deptno from emp;
示例中的其实就作用了一个值,意味着遇到的第一个数就是comm,是不是非空,非空就是本身,否则返回零。这种写法case when 更加简洁
参考资料
其他
- 熟悉sql 到hive的编译过程 和 sql 本身的执行顺序。都是保证优化hivesql 的关健
- hive与传统sql并没有太多变化
- hive sql 是不尊姓ansi的 和 mysql比较像
- hive 查询列不能引用别的查询列笔名,sum(xx)/alias 报错group by key
hive json解析path $.xx 如果需要取内层数据 不需要嵌套get_json_object,直接$.xx.yy即可,这一点在presto也是同样的