Hive综合案例练习(中级)第三十题:登录次数及交易次数统计
登录次数及交易次数统计
题目需求
分别从登陆明细表(user_login_detail)和配送信息表中用户登录时间和下单时间统计登陆次数和交易次数
结果如下(截取部分):
| User_id
(用户id) | Login_date
(登录时间) | login_count
(登陆次数) | Order_count
(交易次数) |
| — | — | — | — |
| 101 | 2021-09-21 | 1 | 0 |
| 101 | 2021-09-27 | 1 | 1 |
| 101 | 2021-09-28 | 1 | 1 |
| 101 | 2021-09-29 | 1 | 1 |
| 101 | 2021-09-30 | 1 | 1 |
| 1010 | 2021-09-27 | 1 | 0 |
| 1010 | 2021-10-09 | 1 | 0 |
| 102 | 2021-09-22 | 1 | 0 |
| 102 | 2021-10-01 | 2 | 3 |
代码实现
- 拿到每个用户每天的登录次数
select user_id,date_format(login_ts, 'yyyy-MM-dd') login_date,count(*) login_count
from user_login_detail
group by user_id, date_format(login_ts, 'yyyy-MM-dd');
- 拿到每个用户每天的交易次数
select t1.user_id,t1.login_date,collect_set(t1.login_count)[0] login_count,count(di.user_id) order_count
from (select user_id,date_format(login_ts, 'yyyy-MM-dd') login_date,count(*) login_countfrom user_login_detailgroup by user_id, date_format(login_ts, 'yyyy-MM-dd')) t1left joindelivery_info diont1.user_id = di.user_id and t1.login_date = di.order_date
group by t1.user_id, t1.login_date