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_count
         from user_login_detail
         group by user_id, date_format(login_ts, 'yyyy-MM-dd')
     ) t1
         left join
     delivery_info di
     on
         t1.user_id = di.user_id and t1.login_date = di.order_date
group by t1.user_id, t1.login_date

你可能感兴趣的:(Hive综合案例练习,hive,hadoop,数据仓库)