网站大量收购闲置独家精品文档,联系QQ:2885784924

db2中的用户定义聚合函数.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
db2中的用户定义聚合函数

db2 中的用户定义聚合函数 作者:佚名 时间:2005-08-30 16:33 出处:互连网 责编:小渔 Knut Stolze 信息集成部门, IBM 德国 2003 年 10 月 DB2 提供了几种内建的聚合 (或者字段)函数,但没有提供直接实现用户定义聚合运算的方式。本文提出了一种实现指定聚合运算的方法。 简介 DB2? Universal Database?? 支持提供了几种内建的聚合函数 1。这些内建函数包括 AVG、COUNT、MIN、MAX、SUM,还有其他一些。然而,当使用用户定义类型的时候,有时会遇到需要聚合计算的情况。目前还没有直接实现您自己的用户定义聚合函数的方法。本文提出了一种实现指定聚合运算的方法。该技术使用了内建的聚合函数 MAX 完成实际的聚合操作,并使用几个标量用户定义函数(UDF)的特性来满足聚合运算特殊的需要。我将使用复数的例子来解释和阐明这种技术。 您可以在数据库的表中管理复数。定义一个结构化的类型来封装复数,如 清单 1 所示。新的数据类型 Complex 在表 complexNumbers 中作为一个字段的类型使用。复数数据类型还提供了方法 add ,该方法允许两个复数相加,其结果是一个新的复数。构造函数 complex 以复数的实部和虚部作为输入参数,构造出一个可以存储到表中的新值。另外还定义了其他方法,出于篇幅原因在这里省略掉了。清单中最后的 INSERT 语句使用三行数据填充表,每一行包含一个不同的复数。 清单 1. 定义和使用复数 CREATE TYPE Complex AS ( real DOUBLE, i DOUBLE ) INSTANTIABLE WITHOUT COMPARISONS NOT FINAL MODE DB2SQL WITH FUNCTION ACCESS@ ALTER TYPE Complex ADD METHOD add(number Complex) RETURNS Complex SPECIFIC complexAdd LANGUAGE SQL DETERMINISTIC NO EXTERNAL ACTION SELF AS RESULT CONTAINS SQL@ CREATE METHOD add(number Complex) RETURNS Complex FOR complex RETURN SELF..real(SELF..real + number..real).. i(SELF..i + number..i)@ CREATE FUNCTION complex(real DOUBLE, i DOUBLE) RETURNS Complex SPECIFIC complexConstr DETERMINISTIC NO EXTERNAL ACTION CONTAINS SQL RETURN Complex()..real(real)..i(i)@ CREATE TABLE complexNumbers ( id INTEGER NOT NULL PRIMARY KEY, number Complex )@ INSERT INTO complexNumbers VALUES ( 1, complex(0, 0) ), ( 2, complex(20.4, 0) ), ( 3, complex(8, 3.5) )@ 现在我们假设您需要计算字段 number 中所有复数的和。内建的 SUM 函数不能理解您的用户定义类型。因此,您不得不自己使用应用逻辑或者递归查询来计算总和。 清单 2 说明了这样一个递归查询的大概样子。该查询相当简单,并且不涉及任何其他条件 2。 清单 2. 使用递归查询计算总和 WITH sumT(cnt, sum) AS

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档