Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL-生成今天登录的用户列表,并且在未来七天内至少登录一次_Sql_Postgresql - Fatal编程技术网

PostgreSQL-生成今天登录的用户列表,并且在未来七天内至少登录一次

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

我有一个表,它有一个用户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        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一旦你问了问题,你应该避免改变你的问题,因为这会使其他人为帮助你所做的工作失效。请再次查看帖子。我对它做了一些编辑。谢谢