giu*_*tti 5 sql postgresql amazon-redshift
我有一个复杂的问题,一见钟情似乎微不足道:
我将用于查询的表是登录表(在Redshift中托管),它具有logintime和usertoken作为用户标识符的时间戳.
每当我想在一天内回答这个问题时,查询就很简单明了:
select count (distinct usertoken)
from logins
where datediff('d',logintime,getdate()) <= 90
Run Code Online (Sandbox Code Playgroud)
问题变得复杂,因为我希望在每个给定日期的数字表中都有这个.
07/07 100k
07/06 98k
07/05 99k
07/04 101k
Run Code Online (Sandbox Code Playgroud)
(......)
窗口函数对我没有帮助,因为我需要计算明显,这在窗口函数中是不可能的.
据我所知,没有办法迭代SQL查询.
我该怎么办呢?
这种简单的方法在计算上非常昂贵:
select days.d, count(distinct l.userid)
from (select distinct date_trunc('day', logintime) as d
from logins l
) days left join
(select distinct userid, date_trunc('day', logintime) as d
from logins
) l
on datediff('d', l.d, days.d) between 0 and 89
group by days.d
order by days.d;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
267 次 |
| 最近记录: |