> 文章列表 > Hive综合案例练习(中级)第三十题:登录次数及交易次数统计

Hive综合案例练习(中级)第三十题:登录次数及交易次数统计

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