【发布时间】:2015-08-05 12:48:00
【问题描述】:
我有一个每个用户的通话列表,有时以分钟分隔。用户可以在这些电话中购买或不购买东西。 当用户在最后一次通话后 45 分钟内拨打电话时,我需要考虑与第一次通话是同一个电话。
我需要得到最终的通话次数(合计通话间隔不到 45 分钟) 以及每位用户购买商品的电话次数。
例如,我有一个这样的列表:
buyer timestamp bougth_flag
tom 20150201 9:15 1
anna 20150201 9:25 0
tom 20150201 10:15 0
tom 20150201 10:45 1
tom 20150201 10:48 1
anna 20150201 11:50 0
tom 20150201 11:52 0
anna 20150201 11:54 0
决赛桌是:
buyer time_started calls articles_bought
tom 20150201 9:15 1 1
anna 20150201 9:25 1 0
tom 20150201 10:15 3 2
anna 20150201 10:50 2 0
tom 20150201 11:52 1 0
因此,我需要合并相隔不到 45 分钟的行,并且仍然按用户分开。 使用循环很容易做到这一点,但我正在使用的 postgresql 中没有循环或函数/过程。 关于如何做到这一点的任何想法?
谢谢
【问题讨论】:
-
我使用的 postgresql 中没有循环或函数/过程。呃。请具体。您在使用 Amazon Redshift 吗?如果是这样,这样说。请指定您的 PostgreSQL 版本 (
SELECT version()) -
“列表”是什么意思?它是 postgres 中的表吗?
-
是的,Amazon Redshift 版本 8.0.2。是的,列表就是表格
-
如果第 1 电话在下午 1:00 打进来,在下午 1:45 打电话给 #2,在下午 1:46 打电话给 #3。即使 #3 和 #1 相隔超过 45 分钟,是否应该合并 3 个调用?
-
嗨,它们确实应该合并。最后一次通话重新激活该通话。
标签: postgresql amazon-redshift