RE: Instead of SUM() I require MULTIPLY

  • From: "Lex de Haan" <lex.de.haan@xxxxxxxxxxxxxx>
  • To: <post.ethan@xxxxxxxxx>, <oracle-l@xxxxxxxxxxxxx>
  • Date: Sat, 10 Dec 2005 09:55:41 +0100

you can build your own aggregate functions in Oracle, by defining four
"primitives" (initialize, iterate, merge, and terminate)
 
for example, I have my own improved SUM function that (in my opinion correctly)
returns zero instead of NULL when applied on the empty set :-)
 
check out the Oracle documentation: OracleR Database Application Developer's
Guide - Fundamentals 
http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_packages
.htm#i1008575
 
and look for the section: 

Coding Your Own Aggregate Functions

cheers,
 
Lex.

---------------------------------------------------------------------
Jonathan Lewis Seminar  <http://www.naturaljoin.nl/events/seminars.html>
http://www.naturaljoin.nl/events/seminars.html
--------------------------------------------------------------------- 
 

  _____  

From: oracle-l-bounce@xxxxxxxxxxxxx [mailto:oracle-l-bounce@xxxxxxxxxxxxx] On
Behalf Of Ethan Post
Sent: Friday, December 09, 2005 23:13
To: oracle-l@xxxxxxxxxxxxx
Subject: Instead of SUM() I require MULTIPLY


I just came up with a function I would like, but don't think exists.
 
TABLE TEST (X NUMBER)
=====================
2
2
4
 
select sum(x) from test;
 
will return 8...
 
what I need is 
 
select multiply(x) from test;
 
will return 16, because 2*2*4 is 16. 
 
Anyone ever seen a SQL aggregate function like this? I don't think it exists but
I hold out hope.
 
- Ethan
BEGIN:VCARD
VERSION:2.1
N:de Haan;Lex
FN:Lex de Haan
ORG:Natural Join B.V.
TEL;WORK;VOICE:+31.30.2515022
TEL;HOME;VOICE:+31.30.2518795
TEL;CELL;VOICE:+31.62.2955714
TEL;WORK;FAX:+31.30.2523366
ADR;WORK:;;Pieter Breughelstraat 10;Utrecht;;3583 SK;Netherlands
LABEL;WORK;ENCODING=QUOTED-PRINTABLE:Pieter Breughelstraat 10=0D=0AUtrecht 3583 
SK=0D=0ANetherlands
URL;WORK:http://www.naturaljoin.nl
EMAIL;PREF;INTERNET:lex.de.haan@xxxxxxxxxxxxxx
REV:20040224T160439Z
END:VCARD

Other related posts: