有几家餐馆(说)在我们的数据库这多个插槽(比如2)插槽打开:分区PostgreSQL的查询给出模棱两可的结果
- 插槽1:上午11时至下午1点30分
- 插槽2:下午07:00至晚上9:00。
我想根据当前时间选择餐厅打开时的正确位置。例如,如果当前时间是06:15 PM,则查询应当返回时隙2,如果当前时间是上午09:00,则返回时隙1,如果是晚上10:00,则返回时隙1。因此,下一个适当的位置应该到来。
的餐馆定时存储在dish_timings_delivery
表列如下所示: 我的查询:
SELECT * from (
SELECT *,row_number() over (partition by id) as x from (
SELECT id,day,start_time,end_time,slot from dish_timings_delivery where id in
(101999001247,101999001225,10199900100,101999001223) order by case
when current_time + interval '5 hours 30 minutes' <= end_time then 1
else 2
end
) as foo) as pp where x < 2
的问题是,对于一个dish_id
(比如101999001247
)查询返回正确的结果,但对于多个dish_ids
(比如101999001247, 101999001225, 10199900100, 101999001223
),如上面的查询结果是不正确的。对于一些餐馆老虎机来说是错误的。
通过错了我的意思是这样的:
注意:CURRENT_TIME的价值 - 时间间隔“1小时30分”是12时26分34秒在张贴时间。
它应该给插槽1,但给人插槽2对一些菜IDS
对于失败的案例,表格中的数据是什么,您得到的结果是什么以及您期望的结果是什么? – jmarkmurphy
@jmarkmurphy plz检查新的更新。 –