Oracle自定义聚合函数之Interval To Second平均值
来源:互联网 发布:相貌评分软件结果 编辑:程序博客网 时间:2024/05/19 22:47
由于项目需要,在网上查了很多资料,没有找到有关求Interval To Second类型字段平均值的文章,于是我自己动手实现了这个功能。
一、创建Oracle Type: day_to_second_avg_type
create or replace type day_to_second_avg_type as object( total interval day(9) to second(2), --参数1,用于做Sum运算 dataCount number, --参数2,统计数据库记录的总数 --初始化函数,用于初始化上下文环境 static function ODCIAggregateinitialize(sctx in out day_to_second_avg_type) return number, --迭代函数,聚合操作正是在此进行 member function ODCIAggregateIterate(self IN OUT day_to_second_avg_type,value IN total%type) return number, --Merge函数,用于并行和串行环境,合并两个环境的上下文信息 member function ODCIAggregateMerge(self IN OUT day_to_second_avg_type,ctx2 IN day_to_second_avg_type) return number, --返回值的函数,在此做最后的加工处理 member function ODCIAggregateTerminate(self IN day_to_second_avg_type,returnValue OUT total%type,flags IN number) return number );/--实现:初始化函数,用于初始化上下文环境create or replace type body day_to_second_avg_type is static function ODCIAggregateInitialize(sctx IN OUT day_to_second_avg_type) return number is begin sctx:= day_to_second_avg_type(numtodsinterval( 0,'SECOND'), 0); --初始化 return ODCIConst.Success; end; --实现:迭代函数,聚合操作正是在此进行 member function ODCIAggregateIterate(self IN OUT day_to_second_avg_type,value IN total%type) return number is begin self.total:=self.total+value; --字段值累加 self.dataCount:= self.dataCount+1; --统计字段个数 return ODCIConst.Success; end; --实现:Merge函数,用于并行和串行环境,合并两个环境的上下文信息 member function ODCIAggregateMerge(self IN OUT day_to_second_avg_type,ctx2 IN day_to_second_avg_type) return number is begin self.total:=self.total+ctx2.total; --合并 self.dataCount:= self.dataCount+ctx2.dataCount; --合并 return ODCIConst.Success; end; --实现:返回值的函数,在此做最后的加工处理 member function ODCIAggregateTerminate(self IN day_to_second_avg_type,returnValue OUT total%type,flags IN number) return number is begin returnValue:=self.total / self.dataCount; --interval day(9) to second(2)类型字段的统计Sum / 该字段个数 return ODCIConst.Success; end; end;
二、创建一个测试用视图
CREATE OR REPLACE VIEW view_test_interval AS SELECT INTERVAL '2 01:23:16.3312' DAY(9) TO SECOND AS interval_col FROM DUAL unionSELECT INTERVAL '6 02:12:14.3312' DAY(9) TO SECOND AS interval_col FROM DUAL unionSELECT INTERVAL '3 04:20:23.3312' DAY(9) TO SECOND AS interval_col FROM DUAL unionSELECT INTERVAL '1 02:16:22.3312' DAY(9) TO SECOND AS interval_col FROM DUAL unionSELECT INTERVAL '9 02:12:11.3312' DAY(9) TO SECOND AS interval_col FROM DUAL;
三、创建一个函数并测试使用
CREATE OR REPLACE FUNCTION ds_avg(input view_test_interval.interval_col%type) RETURN view_test_interval.interval_col%type PARALLEL_ENABLE AGGREGATE USING day_to_second_avg_type; /select ds_avg(interval_col) from view_test_interval;
0 0
- Oracle自定义聚合函数之Interval To Second平均值
- Oracle INTERVAL DAY TO SECOND数据类型
- Oracle INTERVAL DAY TO SECOND数据类型
- Oracle INTERVAL DAY TO SECOND数据类型
- Oracle INTERVAL DAY TO SECOND数据类型
- Oracle,INTERVAL DAY TO SECOND,EXTRACT (datetime)
- Oracle INTERVAL(INTERVAL DAY TO SECOND,INTERVAL YEAR TO MONTH)数据类型的使用
- [转]Oracle之自定义聚合函数
- Oracle中INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND数据类型
- oracle自定义聚合函数
- SQL学习之:INTERVAL YEAR TO MONTH 和 INTERVAL DAY TO SECOND
- oracle 自定义 group 聚合函数
- interval year to month and interval day to second
- interval day to second和interval year to month数据类型
- 使用INTERVAL DAY TO SECOND类型
- DATE 、TIMESTAMP、INTERVAL DAY TO SECOND
- 使用INTERVAL DAY TO SECOND类型
- 使用INTERVAL DAY TO SECOND类型
- Android: Baidu Map API 集成流程 小白备忘...sha值得生成报错
- C语言程序学习(十二)笔记
- 理解objc_msgSend的作用
- linux中断流程详解
- Spring MVC和Struts2的比较
- Oracle自定义聚合函数之Interval To Second平均值
- 9.解决ScrollView与ListView共存时ListView高度无法完全显示的问题。
- 设置Linux KERN_DIR 环境变量
- JAVA – 虚函数、抽象函数、抽象类、接口
- Unity3D教程宝典之插件篇:Unity3D插件详细评测及教学下载
- Java中Collection子接口(1)——List接口(传智播客毕老师视频讲解)
- springmvc 框架,后台跳转到Jsp页面后,显示的是源码
- Linux下关于snmp的snmpwalk命令
- SAP开发者指引-RFC的使用