作业0405

1.lateral view的用法

这个函数相当于拆开行变成列。 

可以理解为行转列。

select
    id,order_label
from table_bx
lateral view explode(split(work_order_label, ',')) order_label as order_label


2.json_tuple和get_json_object的区别,尤其是性能方面

get_json_object 函数的作用:用来解析json字符串的一个字段;

json_tuple 函数的作用:用来解析json字符串中的多个字段。

取多个key值时,json_tuple只解析一次,而get_json_object需要解析多次,所以大部分情况下json_tuple比get_json_object高效。


3.group_concat,concat_ws,wm_concat的区别,举例说明

group_concat:返回一个字符串结果,该结果由分组中的值连接组合而成。

源数据:

SELECT locus,id,journal FROM info WHERE locus IN('AB086827','AF040764');

+----------+----+--------------------------+
| locus    | id | journal                  |
+----------+----+--------------------------+
| AB086827 |  1 | Unpublished              |
| AB086827 |  2 | Submitted (20-JUN-2002)  |
| AF040764 | 23 | Unpublished              |
| AF040764 | 24 | Submitted (31-DEC-1997)  |
+----------+----+--------------------------+

语句 SELECT locus,GROUP_CONCAT(id) FROM info WHERE locus IN('AB086827','AF040764') GROUP BY locus; 的返回结果为

+----------+------------------+
| locus    | GROUP_CONCAT(id) |
+----------+------------------+
| AB086827 | 1,2              |
| AF040764 | 23,24            |
+----------+------------------+

concat_ws:使用语法为:CONCAT_WS(separator,str1,str2,…)
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。但是CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。

SELECT CONCAT_WS(',','First name',NULL,'Last Name');返回结果为

+----------------------------------------------+
| CONCAT_WS(',','First name',NULL,'Last Name') |
+----------------------------------------------+
| First name,Last Name                         |
+----------------------------------------------+

wm_concat:

用指定的spearator做分隔符,做字符串类型的SUM操作。 
参数说明: 
separator,string类型常量,分隔符。其他类型或非常量将引发异常。 
string,string类型,若输入为bigint, double, datetime类型会隐式转换为string后参与运算,其它类型报异常。
返回值: 
    以separator分隔的字符串。 
备注: 
    对语句SELECT wm_concat(‘,’,name) from table;若table为空集合,这条语句返回{NULL}。 


4.collect_list,collect_set的区别,举例说明

它们都是将分组中的某列转为一个数组返回,不同的是collect_list不去重而collect_set去重。

举例:源数据

按用户分组,取出每个用户每天看过的所有视频的名字:

collect_list:

select username, collect_list(video_name) from t_visit_video group by username ;

 结果:

李四对应的数据中有两个“霸王别姬”

 

collect_set:

select username, collect_set(video_name) from t_visit_video group by username;

结果:

李四对应的数据中只有一个“霸王别姬”


5.了解grouping set和cube语法,举例说明

cube:使用CUBE操作符时,在生成原有统计结果基础上,生成纵向小计结果。

grouping set:只返回统计信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值