首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL语言中SaaS用户的队列分析

SQL语言中SaaS用户的队列分析
EN

Stack Overflow用户
提问于 2020-08-06 17:12:40
回答 1查看 53关注 0票数 0

我有一些SaaS用户数据,如下所示:

代码语言:javascript
运行
复制
start_month end_month   User_Id
2019-10 2019-10 1
2019-10 2019-11 2
2019-10 2019-12 3
2019-10 2019-12 4
2019-11 2019-11 5
2019-11 2019-12 6
2019-11 2019-12 7
2019-11 2020-01 8
2019-12 2019-12 9
2019-12 2020-01 10
2019-12  NULL   11
2019-12 2020-02 12

如您所见,数据包含订阅开始日期和订阅结束日期。

start_month和end_month是从开始日期创建的字符串,格式为TO_CHAR(date_trunc('month', start_date), 'yyyy-MM') AS start_month

如果订阅仍处于活动状态,则end_month可以为空。

这是一个postgresql数据库。

使用这些数据,我需要创建一个队列报告,它应该显示每个月有多少人开始订阅,以及从该队列中有多少人在接下来的一个月结束订阅。在上面的数据中,有4个用户开始于2019-10年。1在同一个月(0)结束,1在1个月结束,2在2个月结束。类似地,我们应该得到其他开始月份队列。

很抱歉,我完全不知道如何才能得出这份报告。我已经在互联网上搜索过,但找不到任何相关的答案,因为队列只创建了开始和结束日期。请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-06 18:54:24

如果我理解正确的话,您可以使用条件聚合:

代码语言:javascript
运行
复制
select start_month, count(*),
       count(*) filter (where end_month is null or to_date(end_month, 'YYYY-MM') >= to_date(start_month, 'YYYY-MM') + interval '1 month') as month_1,
       count(*) filter (where end_month is null or to_date(end_month, 'YYYY-MM') >= to_date(start_month, 'YYYY-MM') + interval '2 month') as month_2
from users u
group by start_month;

Here是一个db<>fiddle

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63280398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档