逐月查找重复用户

flseospp  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(248)

我有如下数据
第一个月交易

User_id        trsaction_completed_date               user_type
 1234       7-Jan-19                New 
 5657       8-Jan-19                New 
 7890       9-Jan-19                                New 
 98456         20-Jan-19                                new

第二个月交易

User_id         trsaction_completed_date         user_type 
1234            4-Feb-19         Existing 
5657            5-Feb-19         Existing 
567567          2/13/2019         New

需要从上月数据中查找当月的重复用户。根据我的数据,本月是二月,上个月是一月。
根据我的数据,我需要低于输出
用户id 12345657在1月和2月进行交易
输出:

-----------
Month count
Feb     2
mxg2im7a

mxg2im7a1#

将日期转换为 yyyy-MM-dd 格式,您可以计算每个月的用户事务数,使用lag()获取上一个月的计数。

select month, user_id 
from
(
select month, user_id , cnt, 
      lag(cnt) over(partition by user_id order by month) prev_month_cnt
(
select month(trsaction_completed_date) as month, user_id 
       count(*) cnt
  from transaction_table 
 where trsaction_completed_date between '2019-01-01' and '2019-02-28'
 group by month(trsaction_completed_date), user_id 
)s
)s where month='02' --Feb users
     and  prev_month_cnt>0 --available in previous month

如有必要,添加计数以获得每月的总数

相关问题