欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > Oracle Database 23ai新特性:增加聚合函数对INTERVAL数据类型支持

Oracle Database 23ai新特性:增加聚合函数对INTERVAL数据类型支持

2024/11/30 12:42:40 来源:https://blog.csdn.net/DBDeep/article/details/140220525  浏览:    关键词:Oracle Database 23ai新特性:增加聚合函数对INTERVAL数据类型支持

在Oracle早期的版本,聚合函数和分析函数MIN/MAX 就支持了INTERVAL 数据类型但是,当我们使用SUM或AVG函数对INTERVAL 数据类型进行运算时,就会报错。

随着Oracle Database 23ai 的发布,增加了 AVG 以及 SUM 函数INTERVAL 数据类型的支持,它们可以作为聚合函数或者分析函数使用。

创建测试表以及测试数据

create table TEST1 (

  id          integer,

  start_time  timestamp,

  end_time    timestamp,

  duration    interval day to second generated always as (end_time - start_time) virtual

);

insert into TEST1 (id, start_time, end_time) values (1, timestamp '2024-07-01 08:00:00.0', timestamp '2024-07-01 14:05:00.0');

insert into TEST1 (id, start_time, end_time) values (2, timestamp '2024-07-02 09:00:00.0', timestamp '2024-07-02 15:00:00.0');

insert into TEST1 (id, start_time, end_time) values (3, timestamp '2024-07-03 08:30:00.0', timestamp '2024-07-03 16:45:00.0');

insert into TEST1 (id, start_time, end_time) values (4, timestamp '2024-07-04 07:00:00.0', timestamp '2024-07-04 17:30:00.0');

commit;

查询表中的数据时可以看到基于 START_TIME 和 END_TIME 计算出的时间间隔

alter session set nls_timestamp_format='yyyy-mm-dd hh24:mi:ss';

SET LINESIZE 200

COL END_TIME FOR A25

COL START_TIME FOR A25

COL DURATION FOR A25

select * from TEST1 ;

Oracle早期版本(12.1.0.2)对INTERVAL 数据类型的 MIN/MAX 聚合函数和分析函数的支持

COL MIN_DURATION FOR A25

COL MAX_DURATION FOR A25

select min(duration) as min_duration,

       max(duration) as max_duration

from TEST1;

select id,

       start_time,

       end_time,

       duration,

       min(duration) over () as min_duration,

       max(duration) over () as max_duration

from TEST1;

在此版本中,使用 SUM 或者 AVG 函数,将会产生一个错误信息错误信息如下:

select sum(duration) from TEST1;

select avg(duration) from TEST1;

Oracle 23ai 新增了 INTERVAL 数据类型的 SUM 和 AVG 函数支持

select sum(duration) from TEST1;

select avg(duration) from TEST1;

作为分析函数使用:

select id,

       start_time,

       end_time,

       duration,

       sum(duration) over () as sum_duration

from TEST1;

select id,

       start_time,

       end_time,

       duration,

       avg(duration) over () as avg_duration

from TEST1;

由此可以看到,在Oracle 23ai中,支持了SUM 和 AVG 函数作为分析函数使用

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com