1.首先因为隔夜在线算两天的活跃,所以union要将in_time和out_time合并成一列 2.按照每个用户分组然后以dt为正序安排一个序号,该用户秩序为1的那一天即是他成为新用户的那一天 3.计算每日活跃度人数时一个人不能重复算,因此要 distinct uid,新用户就是把该日秩序为1的那些用户进行统计 SELECT dt,count(DISTINCT uid) dau, ROUND(sum(if(act_rank=1,1,0))/count(DISTINCT uid),2) FROM ( SELECT uid,dt, DENSE_RANK()over(...