求一个简单的SQL语句

已知:下表:

     类型       日期           开始时间      结束时间
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数据库中的实测截图如下,其他常用主流数据库基本也是支持的

img