赞
踩
select * from table
1.1正则表达式指定列
select a,b.* from table;
1.2使用列值进行计算
类似筛选where子句,会在查询的结果中增加一列,显示false和true
select a,b>5 from table;
1.3算数运算符
1.4使用函数
2.1谓词操作符
2.2关于浮点数的比较
浮点数比较的一个常见陷阱出现在不同类型间做比较(float 和double比较)
问题产生的原因:当用户写一个浮点数的时候比如0.2,hive会将改值保存为double类型的
规避的办法:
1.可以在表模式中定义对应的字段类型为double类型而不是float类型。使得对比的时候二者都是double类型。
2.显示的将变量转换成float类型。用cast操作符。即:cast(0.2 as float)
2.3 like 和rlike
rlike(x|y):表示和x或者y匹配
having语句是产生的分组进行条件过滤的任务
join优化
1.hive假定查询最后一个表是最大的表,所以将小表放在前面,会优化进程。
2.当连接的时候,以left join 为例,a表和b表连接后的限定条件一样(where a.name=‘小明’,where b.name='小明)则可以简化成一条语句,where a.name=‘小明’。
笛卡尔积join
a*b,笛卡尔积没有on条件
union all
union all 可以将2个或多个表进行合并,但是要求每个表必须有相同的列。
6.1 order by与sort by
各种排序比较:https://blog.csdn.net/JThink_/article/details/38903775
6.2 含有sort by的distribute by
distribute by相当于先对数据进行分组聚合,然后在对分组的数据,进行组内排序。
所以,
1)distribute by一定要在order by 之前。
2)在distribute by的过程中并没有考虑到组与组之间的排序
6.3 cluster by
cluster by… 等价于distribute by…在order by
但是cluster by…默认降序排列
6.4拓展
RANK() 排序相同时会重复,总数不会变
DENSE_RANK() 排序相同时会重复,总数会减少
ROW_NUMBER() 会根据顺序计算
各种排序比较:
cast(value as type)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。