sql - 取最大重叠日期范围
问题描述
我有一个表,其中包含 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;
推荐阅读
- javascript - 节点 14.16.0:更新后的错误消息
- python - .FITS 文件/表到 csv?
- javascript - 根据索引将值添加到对象列表中的现有对象中
- postgresql - 从日期中提取月份
- python - 如何仅在需要使用模块时才导入模块?
- javascript - Vue:在 beforeRouteEnter 钩子中使用 Vuex 存储取消导航
- azure - 如何使用文件服务将二进制文件 (PDF) 上传到 Azure
- c++ - 从继承的异常类中抛出字符串异常
- c++ - C++ 并行执行和 thread_local 对象销毁
- json - 如何在颤振图中显示 JSON 数据