gpt4 book ai didi

sql - 如何排除日期范围重叠的行

转载 作者:行者123 更新时间:2023-11-29 12:19:56 25 4
gpt4 key购买 nike

Postgresql - 数据格式如下

我目前正在使用以下 SQL 获取为酒店设置的所有预订日期

但是,在一天内,当用户多次更改住宿的预订日期时,会创建多个条目,从而夸大聚合结果。

我能否将 if-else 逻辑应用于重叠的 booking_dates(以红色和黄色突出显示)以仅选择最大(updated_at)(以黄色突出显示)的预订日期?

例如,红色和黄色行的预订日期重叠。如果我应用以下 SQL,那么我的总和将不正确。所以,我只需要考虑 updated_at 最大时的预订日期。

WITH X AS (SELECT distinct booking_end_date, booking_start_date, P_id
FROM booking)
SELECT sum(X.booking_end_date-X.booking_start_date) as Available, X.P_id
from X
group by X.P_id

enter image description here

最佳答案

您可以使用 distinct on 获取每天的最后一个条目:

WITH X AS (
SELECT DISTINCT ON (pid, date_trunc('day', updated_at)) b.*
FROM booking b
ORDER BY pid, date_trunc('day', updated_at), updated_at desc
)
select sum(X.booking_end_date - X.booking_start_date) as Available,
X.P_id
from X
group by X.P_id

关于sql - 如何排除日期范围重叠的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31910126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com