Redshift Min Window 多个日期/ID 的函数
Redshift Min Window Function over multiple dates/ IDs
我有一些数据看起来像这样(截断):
date listing_id inquiry_id listed_on inquiry_date days_between_list_inquiry
2021-06-08 957 16891 2021-06-08T00:00:00.000Z 2020-12-22 168
2021-06-09 957 17045 2021-06-09T00:00:00.000Z 2020-12-22 169
2021-06-09 957 16985 2021-06-09T00:00:00.000Z 2020-12-22 169
2021-03-04 1117 6869 2021-03-04T00:00:00.000Z 2021-03-01 3
2021-03-05 1117 6933 2021-03-05T00:00:00.000Z 2021-03-01 4
2021-03-08 1117 7212 2021-03-08T00:00:00.000Z 2021-03-01 7
2021-03-11 1117 7449 2021-03-11T00:00:00.000Z 2021-03-01 10
table 捕获每个列表在天级别的每日记录。
对于每个 listing_id,我想创建一个列来捕获与该列表相关的 first_inquiry_date。因此,对于 listing_id 957,那将是 2020-12-22;对于 ID 1117,它将是 2021-03-01。
我试过了:
min(date_trunc('day',li.created_at)) over (order by ll.id asc, date asc rows unbounded preceding) as min_inquiry_date,
和
min(date_trunc('day',li.created_at)) over (order by ll.id date rows unbounded preceding) as min_inquiry_date,
以及各种其他订单,但我没有得到我想要的东西。
如有任何帮助,我们将不胜感激。谢谢!
你需要 partition by
:
min(date_trunc('day',li.created_at)) over (partition by listing_id) as min_inquiry_date
你可以这样做
select
listing_id,
min(inquiry_date) as first_inquiry_date
from [table name]
group by 1
我有一些数据看起来像这样(截断):
date listing_id inquiry_id listed_on inquiry_date days_between_list_inquiry
2021-06-08 957 16891 2021-06-08T00:00:00.000Z 2020-12-22 168
2021-06-09 957 17045 2021-06-09T00:00:00.000Z 2020-12-22 169
2021-06-09 957 16985 2021-06-09T00:00:00.000Z 2020-12-22 169
2021-03-04 1117 6869 2021-03-04T00:00:00.000Z 2021-03-01 3
2021-03-05 1117 6933 2021-03-05T00:00:00.000Z 2021-03-01 4
2021-03-08 1117 7212 2021-03-08T00:00:00.000Z 2021-03-01 7
2021-03-11 1117 7449 2021-03-11T00:00:00.000Z 2021-03-01 10
table 捕获每个列表在天级别的每日记录。
对于每个 listing_id,我想创建一个列来捕获与该列表相关的 first_inquiry_date。因此,对于 listing_id 957,那将是 2020-12-22;对于 ID 1117,它将是 2021-03-01。
我试过了:
min(date_trunc('day',li.created_at)) over (order by ll.id asc, date asc rows unbounded preceding) as min_inquiry_date,
和
min(date_trunc('day',li.created_at)) over (order by ll.id date rows unbounded preceding) as min_inquiry_date,
以及各种其他订单,但我没有得到我想要的东西。
如有任何帮助,我们将不胜感激。谢谢!
你需要 partition by
:
min(date_trunc('day',li.created_at)) over (partition by listing_id) as min_inquiry_date
你可以这样做
select
listing_id,
min(inquiry_date) as first_inquiry_date
from [table name]
group by 1