使用者行為分析,指定操作順序

valkyrja110發表於2020-09-24

使用者行為表tracking_log

使用者id操作編號操作時間
user_idopr_idlog_time
  1. 計算每天訪客數和他們的平均操作次數
select date(log_time), count(distinct user_id) as 訪客數量,
		count(opr_id) as 操作次數, count(opr_id) / count(distinct user_id) as 平均操作次數
from tracking_log
group by date(log_time)
  1. 統計每天符合以下條件的使用者數:A操作之後是B操作,AB操作必須相鄰。
select date(log_time), sum(distinct user_id)
from
(select date(log_time), user_id, log_time, opr_id,
		(lead(opr_id) over(partition by date(log_time), user_id order by log_time) as next_oprid
from tracking_log) as r
where r.opr_id = 'A' and r.next_oprid = 'B'
group by date(log_time)

1.首先使用視窗函式lead(opr_id) over(partition by date(log_time), user_id order by log_time)將每一個opr_id的下一個opr_id取出來,作為子表
2.然後使用where 篩選出opr_id為‘A’和下一個opr_id為‘B’的記錄
3.最後按日期進行分組,統計每天有AB操作的使用者數量

不正之處請大家指教

相關文章