【发布时间】:2020-09-04 20:05:14
【问题描述】:
所以我的表有 2 列:小时和客户 ID。每个顾客将有 2 行,一个对应于他/她进入商店的时间,一个对应于他/她离开商店的时间。使用这些数据,我想创建一个表,其中包含客户在商店中的每一个小时。例如,客户 X 在下午 1 点进入商店并在下午 5 点离开,因此将有 5 行(每小时 1 行),如下面的屏幕截图。
这是我现在的尝试:
select
hour
,first_value(customer_id) over (partition by customer_id order by hour rows between unbounded preceding and current row) as customer_id
FROM table
【问题讨论】:
-
Postgres 雪花。请仅标记您正在使用的一个数据库。
-
如果客户的行数超过两行(例如,同一客户稍后返回商店)怎么办?
-
hour列的数据类型是什么? -
@GMB - 移除了雪花。小时是截断到最近的小时的时间戳
-
@GMB - 我们可以假设每个客户有 2 行(一个用于进入,一个用于退出),并且任何偏离的 customerID 都会被过滤掉。
标签: sql postgresql date select group-by