题解 | #计算用户的平均次日留存率#
计算用户的平均次日留存率
http://www.nowcoder.com/practice/126083961ae0415fbde061d7ebbde453
利用窗口函数计算平均日留存率: ①去重(根据device_id,date去除掉用户同一天的消费) ②开窗:根据用户分区按照日期排序选取前一次的消费 ③统计:看消费日期与开窗后的日期是否差一天,如果是则置0,不是则为Null ④计算:count(row)/count() select count(rowcount)/count() from (select if(lastdate = Date_sub(date,interval 1 day),0,null) as rowcount from (select date,lag(date,1) over(partition by device_id order by date) as lastdate from (select device_id,date from question_practice_detail group by device_id,date) d) f)g;