已知:下表:
类型 日期 开始时间 结束时间
1 工时 2021/12/07 14:27:21 14:27:21
2 产出 2021/12/07 18:22:36 18:22:36
3 工时 2021/12/08 09:49:54 09:49:54
4 产出 2021/12/08 19:21:02 19:21:02
5 工时 2021/12/04 10:31:56 10:31:56
6 产出 2021/12/04 15:19:31 15:19:31
求SQL得到:开始时间和结束时间为当日的最小值和最大值,如下表所示:
类型 日期 开始时间 结束时间
1 工时 2021/12/07 14:27:21 18:22:36
2 产出 2021/12/07 14:27:21 18:22:36
3 工时 2021/12/08 09:49:54 19:21:02
4 产出 2021/12/08 09:49:54 19:21:02
5 工时 2021/12/04 10:31:56 15:19:31
6 产出 2021/12/04 10:31:56 15:19:31
用开窗函数,按日期分组,取最小的开始时间和最大的结束时间
select t.tp,
t.d,
min(t.start_time) over(partition by d) start_time,
min(t.end_time) over(partition by d) end_time
from temp_max_min_test t
ORACLE数据库中的实测截图如下,其他常用主流数据库基本也是支持的