1、SELECT....FROM语句
SELECT是SQL中的射影算子。FROM标识了从哪个表,视图或者嵌套查询中选择记录。我们使用如下的表结构
CREATE TABLE IF NOT EXIST employees(
name STRING,
salary FLOAT,
subordinates ARRAY<STRING>,
deductions MAP<STRING,FLOAT>,
address STRUCT<street:STRING, city:STRING,state:STRING,zip:INT>
)
PARTITIONED BY(country STRING,state STRING);
选择基本类型
SELECT name, salary FROM employees
选择集合数据类型
首先,我们来看一下如何查询数组类型的数据,数组类型的数据的数组索引时基于0的,这个和Java中是一样的,比如我们选择subordinates数组的第一个元素查询,如果数组为空数组或者索引越界,直接返回NULL,同时提取出的STRING数据类型的值将不再加引号。:
SELECT name,subordinates[0] FROM employees;
引用MAP类型的元素,直接使用[键名]的方式,不能使用整数索引:
SELECT name, deductions["State Taxes"] FROM employees;
最后,为了引用STRUCT中的一个元素,用户可以使用“点”符号:
SELECT name, address.city FROM employees
使用列值来进行计算
用户不但可以选择表中的列,还可以使用函数调用和算数表达式来操作列值。例如,我们可以查询得到转换为答谢的雇员姓名,雇员对应的薪水、需要缴纳的联邦税收比例,以及口水之后再进行取整所得的税后薪资:
SELECT upper(name),salary, deductions["Federal Taxes"],round(salary * (1-dudctions["Federal Taxes"])) FROM employees;
Hive中支持所有典型的算术运算法,不过,如果数据类型不同,那么两种类型中值范围较小的那个数据类型将转换为其他范围更广的数据类型。