【发布时间】:2017-04-02 15:40:26
【问题描述】:
我的数据库中有一个客户连接日志表,我试图每天计算每个客户在过去 7 天内建立的连接数。我正在使用的源表的架构为
uuid, sessionuid, connection_timestamp
我想要的输出是
uuid, _date, total_connections_over_trailing_seven_days,
这样我就可以查看给定客户帐户和给定日期,该人在过去七天(或其他任何天)内连接了多少次。
我为此编写的查询是
SELECT
uuid,
connection_timestamp::date as _date,
COUNT(sessionuid) OVER (ORDER BY timestamp_session ROWS 6 PRECEDING) as trailing_seven_day_session_count
FROM connection_history_table
但是当我执行这个查询时,我会为每个用户和源表中的每个 connection_timestamp 获得一个单独的行,而不是每个唯一的 connection_timestamp::date 的单个记录。此外, trailing_seven_day_session_count 中的值从 1 增加到最大值 7(如果给定日期至少有 7 个会话),但此后不再增加。所以看起来我在计算某一天的会话数,但只计算前 7 个会话。
uuid _date trailing_seven_day_session_count
16398 2015-02-18 00:00:00 1
16398 2015-02-18 00:00:00 2
16398 2015-02-18 00:00:00 3
16398 2015-02-18 00:00:00 4
16398 2015-02-18 00:00:00 5
16398 2015-02-18 00:00:00 6
16398 2015-02-18 00:00:00 7
16398 2015-02-18 00:00:00 8
16398 2015-02-18 00:00:00 8
16398 2015-02-25 00:00:00 1
16398 2015-02-25 00:00:00 2
16398 2015-02-25 00:00:00 3
16398 2015-02-25 00:00:00 4
16398 2015-02-25 00:00:00 5
16398 2015-02-25 00:00:00 6
16398 2015-02-25 00:00:00 7
16398 2015-02-25 00:00:00 8
16398 2015-02-25 00:00:00 8
我是使用窗口函数的新手,我不清楚我在这里做错了什么。我尝试通过 connection_timestamp::date 进行分区,但这也无济于事。我基本上抓住了稻草,但没有成功。
谢谢, 布拉德
【问题讨论】:
标签: postgresql amazon-redshift