【问题标题】:SQL: Get All Sets of Dates Up to 20 Days ApartSQL:获取最多相隔 20 天的所有日期集
【发布时间】:2017-06-16 20:55:32
【问题描述】:

我在制定 SQL 查询时遇到了问题,该查询从包含日期的列返回所有相隔最多 20 天的日期集。

如果,例如,日期是

1/1/2000, 1/15/2000, 1/20/2000, 2/1/2000

这些集合是:

{(1/1/2000, 1/15/2000, 1/20/2000), (1/15/2000, 1/20/2000, 2/1/2000)}

我只想要最大的集合:例如 (1/1/2000, 1/15/2000) 不包括在内,因为它是另一个集合的子集。

我怀疑答案会使用交叉连接。

【问题讨论】:

  • 标记您正在使用的 dbms 并将预期结果发布为格式化文本。
  • (1) 您使用的是什么数据库(相应地标记)? (2) 输出是什么样的? SQL 查询返回具有固定列数的结果集。
  • 如果您查看最大的一组,那么结果是一组 {1/1/2000, 1/15/2000, 1/20/2000, 2/1/2000}。

标签: sql pentaho


【解决方案1】:

标准 SQL 如下所示:

select t.date as SetIdentifier, t2.date as date
from t join
     t t2
     on t2.date >= t.date and t2.date < t.date + interval '21 day'
order by t.date, t2.date;

这通过集合中的第一天来标识每个集合(假设所有日期都是唯一的)。

【讨论】:

    猜你喜欢
    • 2020-11-01
    • 2020-10-08
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 2021-12-11
    • 2020-09-20
    相关资源
    最近更新 更多