【发布时间】:2016-06-25 01:43:20
【问题描述】:
关于 PostgreSQL 标签,您可能知道,Redshift is based off of PostgreSQL。
Amazon Redshift 基于 PostgreSQL 8.0.2。 Amazon Redshift 和 PostgreSQL 有许多非常重要的区别,您在设计和开发数据仓库应用程序时必须注意这些区别。
我有一个这样创建的表:
create table purchase (
user_id int,
item_id int,
t timestamp
)
diststyle even
interleaved sortkey(user_id, item_id, t);
我想执行一个查询,告诉我十分钟内最活跃的 3 个用户(购买次数最多的用户),以及同一十分钟内购买次数最多的 3 个商品。
所以结果应该是这样的
+-item_id-|-user_id-|-window-+
| aaa | xxx | 0 |
+---------+---------+--------+
| bbb | yyy | 0 |
+---------+---------+--------+
| ccc | zzz | 0 |
+---------+---------+--------+
| ... | ... | 1 |
+---------+---------+--------+
| ... | ... | 1 |
+---------+---------+--------+
| ... | ... | 1 |
..............................
| ... | ... | 5 |
+---------+---------+--------+
| ... | ... | 5 |
+---------+---------+--------+
| ... | ... | 5 |
+---------+---------+--------+
其中aaa 是前十分钟窗口中购买次数最多的商品,bbb 是前十分钟窗口中购买次数第二多的商品,以此类推,xxx 是前十分钟窗口内购买次数最多的用户,yyy 是第一个窗口内购买次数第二多的用户,以此类推。有六个 10 分钟的窗口,因为我将在一个小时的日期范围内执行此操作。
我对 Redshift 还很陌生,所以很遗憾,我没有任何现有的 SQL 可以向您展示我的尝试。
【问题讨论】:
-
添加脚本来填充一些数据,我可以尝试帮助查询 postgres
-
@VaoTsun 获取数据太难了,但我很快就会发布我使用的答案。
标签: postgresql amazon-redshift