【问题标题】:how to find values between two columns and compare them to others?如何查找两列之间的值并将它们与其他列进行比较?
【发布时间】:2021-12-25 11:59:01
【问题描述】:

早安,

我有下表:

我试图弄清楚如何计算每个预订 ID 的重叠预订。结果应如下所示:

例如Reservation ID 1 从第 2 天到第 5 天,因此与 Reservation ID 2 和 Reservation ID 5 重叠。

我想包括一些我已经尝试过的东西,但它们离得太远了,甚至还没有接近正确。

【问题讨论】:

  • 不要从不从不发布表格图片。将CREATEINSERT 语句发布为文本

标签: sql sqlite group-by count range


【解决方案1】:

您可以使用自我LEFT 加入和聚合:

SELECT r1.id, COUNT(r2.id) count
FROM reservations r1 LEFT JOIN reservations r2
ON r2.id <> r1.id AND r2.beginning_day <= r1.ending_day AND r2.ending_day >= r1.beginning_day
GROUP BY r1.id;

或者,使用相关子查询更简单:

SELECT r1.id,
       (
         SELECT COUNT(*) 
         FROM reservations r2 
         WHERE r2.id <> r1.id
           AND r2.beginning_day <= r1.ending_day AND r2.ending_day >= r1.beginning_day
       ) count
FROM reservations r1;

请参阅demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 2022-08-05
    相关资源
    最近更新 更多