Hive 刷题——用户注册、登录、下单综合统计

需求描述

从用户登录明细表(user_login_detail)和订单信息表(order_info)中查询每个用户的注册日期(首次登录日期)、总登录次数以及其在2021年的登录次数、订单数和订单总额。
期望结果如下:
user_id
(用户id)
 
register_date
(注册日期)
 
total_login_count
(累积登录次数)
 
login_count_2021
(2021年登录次数)
 
order_count_2021
(2021年下单次数)
 
order_amount_2021
(2021年订单金额)
<decimal(16,2)>
101
2021-09-21
5
5
4
143660.00
102
2021-09-22
4
4
4
177850.00
103
2021-09-23
2
2
4
75890.00
104
2021-09-24
4
4
4
89880.00
105
2021-10-04
1
1
4
120100.00
106
2021-10-04
2
2
4
119150.00
107
2021-09-25
4
4
4
124150.00
108
2021-10-06
2
2
4
155770.00
109
2021-09-26
3
3
2
129480.00
需要用到的表:
用户登录明细表:user_login_detail
user_id(用户id)
ip_address(ip地址)
login_ts(登录时间)
logout_ts(登出时间)
101
180.149.130.161
2021-09-21 08:00:00
2021-09-27 08:30:00
102
120.245.11.2
2021-09-22 09:00:00
2021-09-27 09:30:00
103
27.184.97.3
2021-09-23 10:00:00
2021-09-27 10:30:00
订单信息表:order_info
order_id
(订单id)
user_id
(用户id)
create_date
(下单日期)
total_amount
(订单金额)
1
101
2021-09-30
29000.00
10
103
2020-10-02
28000.00

参考SQL

select t.user_id,register_date,total_login_count,login_count_2021,order_count_2021,order_amount_2021
from (select user_id,
             date(min(login_ts))                  register_date,
             sum(1)                               total_login_count,
             sum(if(year(login_ts) = 2021, 1, 0)) login_count_2021
      from user_login_detail
      group by user_id) t
         join
     (select user_id,
             sum(1)            order_count_2021,
             sum(total_amount) order_amount_2021
      from order_info
      where year(create_date) = 2021
      group by user_id) t1 on t.user_id = t1.user_id;
posted @ 2023-01-16 10:13  晓枫的春天  阅读(62)  评论(0编辑  收藏  举报