sql常用函数(6)

2019-07-29 11:00

十、复杂类型访问操作 1. array类型访问: A[n]

语法: A[n]

操作类型: A为array类型,n为int类型

说明:返回数组A中的第n个变量值。数组的起始下标为0。比如,A是个值为['foo', 'bar']的数组类型,那么A[0]将返回'foo',而A[1]将返回'bar' 举例:

hive> create table lxw_test as select array(\ hive> select t[0],t[1],t[2] from lxw_test; tom mary tim

2. map类型访问: M[key]

语法: M[key]

操作类型: M为map类型,key为map中的key值

说明:返回map类型M中,key值为指定值的value值。比如,M是值为{'f' -> 'foo', 'b' -> 'bar', 'all' -> 'foobar'}的map类型,那么M['all']将会返回'foobar' 举例:

hive> Create table lxw_test as select map('100','tom','200','mary') as t from lxw_dual; hive> select t['200'],t['100'] from lxw_test; mary tom

3. struct类型访问: S.x

语法: S.x

操作类型: S为struct类型

说明:返回结构体S中的x字段。比如,对于结构体struct foobar {int foo, int bar},foobar.foo返回结构体中的foo字段 举例:

hive> create table lxw_test as select struct('tom','mary','tim') as t from lxw_dual; hive> describe lxw_test;

t struct hive> select t.col1,t.col3 from lxw_test; tom tim

十一、复杂类型长度统计函数 1. Map类型长度函数: size(Map)

语法: size(Map) 返回值: int

说明: 返回map类型的长度

举例:

hive> select size(map('100','tom','101','mary')) from lxw_dual;

2. array类型长度函数: size(Array)

语法: size(Array) 返回值: int

说明: 返回array类型的长度 举例:

hive> select size(array('100','101','102','103')) from lxw_dual;

3. 类型转换函数

类型转换函数: cast

语法: cast(expr as )

返回值: Expected \ 说明: 返回array类型的长度 举例:

hive> select cast(1 as bigint) from lxw_dual;

4. case when解释

select 课程,

sum(case when 姓名='李四' then 成绩end)as '李四', sum(case when 姓名='张三' then 成绩end)as '张三' from table_2 group by 课程 --意思是:

查询结果按照“课程”、“李四的成绩”、“张三的成绩”显示出来, 其中“李四的成绩”计算方法是:

当姓名=李四,那么就计算将该行的成绩按照课程进行分类加总 “张三的成绩”计算方法是:

当姓名=张三,那么就计算将该行的成绩按照课程进行分类加总 select 姓名,

sum(case when 课程='语文' then 成绩end)as '语文', sum(case when 课程='数学' then 成绩 end)as '数学', sum(case when 课程='英语' then 成绩 end)as '英语' from table_2 group by 姓名 --类似的意思是:

查询结果按照“姓名”、“语文”、“数学”、“英语”按照姓名进行加总各科成绩显示出来, 其中“语文”成绩计算方法是:

当科目=语文,那么就计算将该行的成绩按照姓名进行分类加总

“数学”成绩计算方法是:

当科目=数学,那么就计算将该行的成绩按照姓名进行分类加总 “英语”成绩计算方法是:

当科目=英语,那么就计算将该行的成绩按照姓名进行分类加总 case when 条件 then 表达式1 else 表达式2 end 表示:当条件成立,则返回表达式1,否则返回表达式2.

因此:sum(case when 姓名='李四' then 成绩 end)as '李四', 表示如果姓名为李四,则加总计算成绩,列名为?李四?


sql常用函数(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:乐游旅游公司 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: