sql - 根据一列/SQL Oracle 中的值创建时间间隔
问题描述
我需要创建将从表中返回时间间隔的查询,该查询具有(几乎)每天的属性。
原始表如下所示:
Person | Date | Date_Type
-------|------------|----------
Sam | 01.06.2020 | Vacation
Sam | 02.06.2020 | Vacation
Sam | 03.06.2020 | Work
Sam | 04.06.2020 | Work
Sam | 05.06.2020 | Work
Frodo | 01.06.2020 | Work
Frodo | 02.06.2020 | Work
.....
期望的应该是这样的:
Person | Date_Interval | Date_Type
-------|-----------------------|----------
Sam | 01.06.2020-02.06.2020 | Vacation
Sam | 03.06.2020-05.06.2020 | Work
Frodo | 01.06.2020-02.06.2020 | Work
.....
将不胜感激任何想法:)
解决方案
这是一种差距和孤岛问题。
要获得相同的相邻日期date_type
,您可以减去一个序列。它将在相邻的日子里保持不变。然后你可以聚合:
select person, date_type, min(date), max(date)
from (select t.*,
row_number() over (partition by person, date_type
order by date) as seqnum
from t
) t
group by person, date_type, (date - seqnum);
推荐阅读
- lisp - 使用 Common LISP 运行爬山搜索的问题
- python - 如何在不使用线程/后台作业的情况下同时使服务器端循环无休止和非阻塞?
- android - 带有过滤器的 Recyclerview 中的 Firestore 一次性获取与实时侦听器
- macos - Unable to locate .npm/_logs/ folder on mac
- php - why my host add automaticlly add secure flag to cookie?
- sql-server - 从 SQL Server 中的 VARBINARY(MAX) 下载 .PDF
- javascript - axios实例promise.all错误处理
- sql - SELECT $b 没有将智能感知显示为错误,但会引发错误。这种情况背后的原因是什么?
- python - 尝试在opencv imread函数中使用多个图像但没有得到
- laravel - 当我运行命令 npm install 它给出错误 npm ERR cb() never called