取最大重叠日期范围

Take the max overlap date range

我有一个 table,它有 3 列,我需要从中获取特定 cust_id 的最大日期范围。

cust_id from_date to_date

101 2018-08-03 00:00:00 9999-12-31 00:00:00

101 2018-08-05 00:00:00 2021-02-01 00:00:00

101 2018-08-01 00:00:00 2019-02-01 00:00:00

::impala::

中的预期结果

id from_date to_date

101 2018-08-03 00:00:00 9999-12-31 00:00:00

有人可以帮助我吗?谢谢

我们可以尝试使用按起始日期和起始日期的日期差异排序的 LIMIT 查询:

SELECT cust_id, from_date, to_date
FROM yourTable
WHERE cust_id = 101
ORDER BY DATEDIFF(to_date, from_date) DESC
LIMIT 1;

要查找 所有 客户的最大差异记录,我们可以使用 RANK:

WITH cte AS (
    SELECT t.*, RANK() OVER (PARTITION BY cust_id
                             ORDER BY DATEDIFF(to_date, from_date) DESC) rnk
    FROM yourTable t
)

SELECT cust_id, from_date, to_date
FROM cte
WHERE rnk = 1;