首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算每月滚动3个月的唯一成员数的SQL逻辑

计算每月滚动3个月的唯一成员数的SQL逻辑
EN

Stack Overflow用户
提问于 2020-03-04 15:56:45
回答 2查看 63关注 0票数 0

我正在处理一个请求,以计算以下日期桶的表中唯一注册成员的数量(基于registration_date_utc - timestamp),

1月1日-3月31日:唯一注册会员数量

2月1日-4月30日:唯一注册会员数量

3月1日-5月31日:唯一注册会员数量

4月1日至6月30日:唯一注册会员数量

5月1日-7月31日:独立注册会员数量

6月1日-8月31日:唯一注册会员数量

7月1日-9月30日:唯一注册会员数量

8月1日-10月31日:唯一注册会员数量

9月1日-11月30日:唯一注册会员数量

10月1日-12月31日:唯一注册会员数量

下面是我的Snowflake查询,它可以工作,但没有返回任何结果,

代码语言:javascript
复制
select
DATE_TRUNC('month',t.registration_date_utc) as "MONTH_START",
count(distinct t.MEMBER_ID)
FROM
(
select
member_id,
registration_date_utc
from  table a
) as t
WHERE TO_DATE(t.registration_date_utc) BETWEEN DATEADD(month,'3',t.registration_date_utc) AND t.registration_date_utc
group by 1
order by 1;
EN

回答 2

Stack Overflow用户

发布于 2020-03-04 16:53:35

在START_DATE和END_DATE之间,日期条件将始终为false

代码语言:javascript
复制
select
DATE_TRUNC('month',t.registration_date_utc) as "MONTH_START",
count(distinct t.MEMBER_ID)
FROM
(
select
member_id,
registration_date_utc
from  table a
) as t
--WHERE TO_DATE(t.registration_date_utc) BETWEEN DATEADD(month,'3',t.registration_date_utc) AND t.registration_date_utc
WHERE TO_DATE(t.registration_date_utc) BETWEEN t.registration_date_utc AND DATEADD(month,'3',t.registration_date_utc) 

group by 1
order by 1;
票数 1
EN

Stack Overflow用户

发布于 2020-03-04 20:46:07

您想要计算三个月的独立访问者。一种方法是扩展计数表:

代码语言:javascript
复制
SELECT DATE_TRUNC('month', t.registration_date_utc) + v.offset * INTERVAL '1 month') as MONTH_START,
       COUNT(DISTINCT t.MEMBER_ID)
FROM t CROSS JOIN
     (VALUES (0), (1), (2)) v(offset)
GROUP BY 1
ORDER BY 1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60521344

复制
相关文章

相似问题

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