通过代码
SELECT
dt,
tot dau,
round((ifnull(new,0))/ tot,2) uv_new_ratio
FROM(SELECT
count(uid) new,
inttime
FROM(SELECT
uid,
min(date(in_time)) inttime
FROM
tb_user_log
group BY
uid)a
GROUP BY
inttime) aa
RIGHT JOIN(SELECT
count(uid) tot,
dt
FROM(SELECT
uid,
date(in_time) dt
FROM
tb_user_log
UNION
SELECT
uid,
date(out_time) dt
FROM
tb_user_log)b
GROUP BY
dt)bb
ON
aa.inttime = bb.dt
order BY
bb.dt
思路
统计每天的日活数及新用户占比
注: 新用户占比=当天的新用户数÷当天活跃用户数(日活数)。 如果in_time-进入时间和out_time-离开时间跨天了,在两天里都记为该用户活跃过。 新用户占比保留2位小数,结果按日期升序排序。
,,之前这俩都写过
所以这里就简单一点直接上代码
1.每日新用户数目
SELECT
count(uid) new,
inttime
FROM(SELECT
uid,
min(date(in_time)) inttime
FROM
tb_user_log
group BY
uid)a
GROUP BY
inttime
2.当天活跃用户数
SELECT
count(uid) tot,
dt
FROM(SELECT
uid,
date(in_time) dt
FROM
tb_user_log
UNION
SELECT
uid,
date(out_time) dt
FROM
tb_user_log)b
GROUP BY
dt
以二表为主表进行连接,注意new可能是null,所以我们加一个ifnull判断
最后order以下结束