hsql场景题刷题

本文围绕HSQL进行了一系列场景题的解答,涉及聚合函数的运用,如双维度分组;排名函数的区别及应用;行列转换的方法,包括使用`CASE`表达式和`EXplode`函数等。同时,探讨了如何编写SQL实现连续7天登录的总人数和每班前三名的分差问题,以及如何处理行列互换的技巧。
摘要由CSDN通过智能技术生成
start-all.sh
hive --service metastore &
hive --service hiveserver2 &
beeline -u 'jdbc:hive2://qianfeng01:10000'

上面是开启hive,打开的是beeline模式。好久没用过,我都忘记了。

1

就是涉及到聚合函数的内容,就把聚合函数这边作为虚表的子查询,虚表千万别少表别名!

group的双维度,就是在子查询里面先group。

userid,month,visits 
A,2015-01,5
A,2015-01,15
B,2015-01,5
A,2015-01,8
B,2015-01,25
A,2015-01,5
A,2015-02,4
A,2015-02,6
B,2015-02,10
B,2015-02,5
A,2015-03,16
A,2015-03,22
B,2015-03,23
B,2015-03,10
B,2015-03,1
drop table visits;
create table visits(
userid string, 
month string, 
visits int 
)
row format delimited 
fields terminated by ',' 
;
load data local inpath './hivedata/visits.txt' overwrite into table visits; 

完成需求:每个用户截止到每月为止的最大单月访问次数和累计到该月的总访问次数,结果数据格式如下:


+---------+----------+---------+-------------+---------------+--+
| userid  |  month   | visits  | max_visits  | total_visits  |
+---------+----------+---------+-------------+---------------+--+
| A       | 2015-01  | 33      | 33          | 33            |
| A       | 2015-02  | 10      | 33          | 43            |
| A       | 2015-03  | 38      | 38          | 81            |
| B       | 2015-01  | 30      | 30          | 30            |
| B       | 2015-02  | 15      | 30          | 45            |
| B       | 2015-03  | 34      | 34          | 79            |
+---------+----------+---------+-------------+---------------+--+

我的答案

select userid,month,max_visits,visits,total_visits from (select userid,month,visits,max(visits) as max_visits,sum(visits) as 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值