You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Redshift中查询存在时间戳重叠的跨所有者产品记录

按产品分组查询时间戳重叠的跨所有者记录

需求说明

筛选同一产品下,时间区间与其他所有者记录存在重叠的条目,即找出同一时间区间内由不同所有者拥有的产品详情。

解决方案

方法1:自连接+去重

通过自连接关联同表数据,匹配同一产品、不同所有者且时间重叠的记录,用DISTINCT避免重复结果:

SELECT DISTINCT t1.*
FROM your_table t1
JOIN your_table t2
  ON t1.product = t2.product
  AND t1.owner != t2.owner
  AND t1.beginDate < t2.endDate
  AND t1.endDate > t2.beginDate
ORDER BY t1.product, t1.beginDate;

方法2:EXISTS子查询

用子查询判断当前记录是否存在同产品、不同所有者的时间重叠记录,无需处理重复,性能更优:

SELECT *
FROM your_table t1
WHERE EXISTS (
  SELECT 1
  FROM your_table t2
  WHERE t2.product = t1.product
    AND t2.owner != t1.owner
    AND t2.beginDate < t1.endDate
    AND t2.endDate > t1.beginDate
)
ORDER BY t1.product, t1.beginDate;

逻辑说明

  • 时间重叠判定:beginDate < 对方endDate AND endDate > 对方beginDate 是通用的时间区间重叠判断条件,能覆盖部分重叠、完全包含等所有重叠场景。
  • 关联限制:确保仅匹配同一产品下的不同所有者记录,排除跨产品或同一所有者的无效匹配。

示例验证

将提供的示例数据代入上述查询,会得到期望输出:

ownerproductbeginDateendDate
Bone2017-09-262019-09-10
Cone2019-09-012020-01-05
Etwo2017-08-012018-09-08
Ftwo2017-12-032018-11-30

内容的提问来源于stack exchange,提问作者Kavya shree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:22:56