留存信息统计

需求:

看某一段时间内,注册的用户7日内留存,比如输入一个时间区间,显示这7日内注册用户总数,然后从第1天到第7天每一天的留存数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
## ==================================================
##    让读书成为一种生活方式。就像吃喝拉撒每天必须要干的事,
## 终有一天你的举止、言谈、气质会不一样。
##                                        —- 5sdba
##
## Created Date: Tuesday, 2021-03-03, 10:54:59 am
## copyright (c):    SZWW Tech. LTD.
## Engineer:   async
## Module Name:  
## Revision:   v0.01
## Description:
##  
## Revision History :
## Revision  editor date         Description        
## v0.01  async  2021-03-02 File Created
## ==================================================
-- sum_cnt 当日查寻当月注册人数
-- d0_14 最近14天总注册人数
-- d0 当天注册人数
-- d1 第一天注册人数
-- d2 第二天注册人数
 
SELECT register_date,count(1) as sum_cnt,sum(case when day_diff between 0 and 14 then 1 else 0 end) as d0_d14,
       sum(case when day_diff = 0 then 1 else 0 end) day_0,
       sum(case when day_diff = 1 then 1 else 0 end) day_1,
       sum(case when day_diff = 2 then 1 else 0 end) day_2,
       sum(case when day_diff = 3 then 1 else 0 end) day_3,
       sum(case when day_diff = 4 then 1 else 0 end) day_4,
       sum(case when day_diff = 5 then 1 else 0 end) day_5,
       sum(case when day_diff = 6 then 1 else 0 end) day_6,
       sum(case when day_diff = 7 then 1 else 0 end) day_7,
       sum(case when day_diff = 8 then 1 else 0 end) day_8,
       sum(case when day_diff = 9 then 1 else 0 end) day_9,
       sum(case when day_diff = 10 then 1 else 0 end) day_10,
       sum(case when day_diff = 11 then 1 else 0 end) day_11,
       sum(case when day_diff = 12 then 1 else 0 end) day_12,
       sum(case when day_diff = 13 then 1 else 0 end) day_13,
       sum(case when day_diff = 14 then 1 else 0 end) day_14
 from
      (select d.userid,
        date_format(ma.create_time,'%Y-%m-%d') as register_date,
       DATEDIFF(from_unixtime(d.CreateTime,'%Y-%m-%d'),date_format(ma.create_time,'%Y-%m-%d')) as day_diff
         from xxx.xxx ma
join xxx.xx o on ma.id=o.user_id
         left join xx.xx d on ma.id=d.UserId
        where extract(year_month from ma.create_time)={{month}}
     and ma.account_role<50 [[ and ma.service_area={{area}}]]
 
    group by 1,2,3
        ) xa
group by 1
order by 1

  

posted @   5sdba  阅读(85)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示