开发者社区> 问答> 正文

SQL-请统计每个访问渠道7天前(D-7)的新用户的3日留存和7日留存率。

已解决

对于通过不同渠道拉新进来的用户,经过一段时间许多用户可能流水,而留下来的用户称之为留存用户。分析用户留存是拉新和用户运营的重要指标。假如我们有一张用户访问表:person_visit,记录了所有用户的访问信息,包含字段:

用户id:user_id,访问时间:visit_date,访问页面:page_name,访问渠道(android,ios):plat等

请统计每个访问渠道7天前(D-7)的新用户的3日留存和7日留存率?

展开
收起
夏天的风雨 2021-10-02 09:34:18 1014 0
1 条回答
写回答
取消 提交回答
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。
    采纳回答

    您好,

    SELECT plat, COUNT(DISTINCT user_id) FROM person_visit
    WHERE MIN(DATE_FORMAT(visit_date, '%Y%m%d')) = (CURDATE()-INTERVAL 7 DAY)
    GROUP BY plat;
    
    SELECT plat, COUNT(DISTINCT user_id) FROM person_visit
    WHERE DATE_FORMAT(visit_date,  '%Y%m%d') = (CURDATE()-INTERVAL 4 DAY) AND
    user_id IN (SELECT user_id FROM person_visit
    WHERE MIN(DATE_FORMAT(visit_date,  '%Y%m%d')) = (CURDATE()-INTERVAL 7 DAY))
    GROUP BY plat;
    
    SELECT plat, COUNT(DISTINCT user_id) FROM person_visit
    WHERE DATE_FORMAT(visit_date, '%Y%m%d') = CURDATE() AND
    user_id IN (SELECT user_id FROM person_visit
    WHERE MIN(DATE_FORMAT(visit_date,  '%Y%m%d')) = (CURDATE()-INTERVAL 7 DAY))
    GROUP BY plat;
    
    2021-10-02 10:35:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载