取最大重叠日期范围
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;
我有一个 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;