有人可以帮帮我吗?我有两个表:价格和间隔:
Prices: Intervals:
Price Interval_bound Category
16 5 cheap
11 10 cheap
9 15 median
26 20 median
6 25 expensive
我需要根据区间将类别值加入价格,其中 Interval_bound 是类别的最低边界:
Price Category
16 median
11 cheap
9 cheap
26 expensive
6 cheap
我试过用
select Price, Category from Prices
left join Intervals on Prices.Price interpolate previous value Interval.Interval_bound
但它只为类别提供了 NULL。我怎样才能以最简单的方式做到这一点?我正在使用 Vertica。
最佳答案
您可以使用lead()
获取下一个上限然后join
:
select p.Price, i.Category
from Prices p left join
(select i.*,
lead(interval_bound) over (order by interval_bound) as next_interval_bound
from Intervals i
) i
on p.price >= i.interval_bound and
(p.price < i.next_interval_bound or i.next_interval_bound is null);
关于sql - JOIN 当前行和上一行之间的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66102193/