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 函数作为分析函数使用

  • 19
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值