【发布时间】:2020-08-18 09:34:48
【问题描述】:
我需要时间戳满足:order_day = '4th' 显示在 1 列中
这样的数据称为“t1”:
timestamp id order_day
day 9 id1 5th
day 8 id1 4th
day 7 id1 3th
day 6 id1 2th
day 5 id1 1th
想要的结果:
timestamp id order_day info
day 9 id1 5th day 8
day 8 id1 4th day 8
day 7 id1 3rd day 8
day 6 id1 2nd day 8
day 5 id1 1st day 8
目前我使用:
select *,
min(timestamp) filter (where order_day = '4th') over (partition by id) as info
from t1
但我不想使用min(),因为这不是我的目的,因为每个id 只有1 个'4th' 对应order_day,所以使用max() or min() 显示相同的结果。有什么办法吗?
我问了一个有点相同但使用min()here的问题
【问题讨论】:
-
你为什么不使用
min()(或max()),而它会产生你想要的结果? -
因为我认为它应该有另一种方式来达到这个目的@GMB
-
EX:我使用 :
(case when order_day = '4th' then timestamp else null end) over (...)不起作用,不使用 min() :timestamp filter () over ()会导致语法错误 -
我认为窗口
min()(或max())是这里最好的方法。 -
EX:我使用 :
(case when order_day = '4th' then timestamp else null end) over (...)不起作用并且不使用 min() :timestamp filter () over ()会导致语法错误@GMB
标签: sql postgresql window-functions