PostgreSQL-生成今天登录的用户列表,并且在未来七天内至少登录一次
我有一个表,它有一个用户id,第一个在::date,最后一个在::date,如下所示PostgreSQL-生成今天登录的用户列表,并且在未来七天内至少登录一次,sql,postgresql,Sql,Postgresql,我有一个表,它有一个用户id,第一个在::date,最后一个在::date,如下所示 user_id . first_hit_at . last_hit_at 1 2017-01-01 2017-01-01 2 2017-01-01 2017-01-01 3 2017-01-01 2017-01-01 4 2017-01-01 2017-01-01 5
user_id . first_hit_at . last_hit_at
1 2017-01-01 2017-01-01
2 2017-01-01 2017-01-01
3 2017-01-01 2017-01-01
4 2017-01-01 2017-01-01
5 2017-01-01 . 2017-01-01
6 2017-01-01 2017-01-01
7 2017-01-01 . 2017-01-01
8 2017-01-01 . 2017-01-01
9 2017-01-01 . 2017-01-01
期望输出:
count(distinct_id) date
3 2017-01-01
2 2017-01-02
1 2017-01-03
2 2017-01-04
我想统计一下如果今天登录的用户,他们在接下来的7天内也至少登录一次
我编写的SQL查询:
select
a.user_id,
first_hit_at::date,
row_number() over(partition by a.user_id order by first_hit_at) as rn
from stg_marketing.ga_sessions a
where first_hit_at::date between '2017-01-01' and '2017-01-31'
and user_login_state = 'true'
--and first_hit_at::date > '7'
order by 2,3 asc;
这回答了问题的原始版本 我会想到聚合。大概是这样的:
select user_id
from stg_marketing.ga_sessions s
where s.first_hit_at >= current_date - interval '7 day'
group by s.user_id
having max(first_hit_at) >= current_date and
min(first_hit_at) < current_date();
选择用户\u id
来自stg_marketing.ga_sessions
其中s.first\u在>=当前日期-间隔“7天”
按s.user\U id分组
最大(第一次命中)>=当前日期和
最小值(第一次命中)<当前日期();
您确定所需的输出与描述相符吗?@VamsiPrabhala:是的,我想统计一下如果今天登录并且在未来7天内至少登录一次的用户数量。我假设“他们在未来7天内也至少登录一次”指的是前7天。将来的登录似乎不太可能记录在表中。@GordonLinoff:我已经编辑了帖子,表中有两个字段,first_hit_at和last_hit_at,我想要今天和未来7天内登录的用户数。Thanks@chiragkalra一旦你问了问题,你应该避免改变你的问题,因为这会使其他人为帮助你所做的工作失效。请再次查看帖子。我对它做了一些编辑。谢谢