Werte in einem Feld alle Multiplizieren

Ben2003

Aktiver Benutzer
Beiträge
33
Hallo,

mit Sum kann man alle Werte eine einem Feld von mehreren Datensätzen addieren.

Gibt es auch eine Funktion, mit der alle Werte in einem Feld miteinander multipliziert werden können?
 
Werbung:
Hallo,

zwischenzeitlich habe ich eine Lösung mit einer mathematischen Formel gefunden:

Multiplication aggregate operator in SQL

Code:
with yourTable as
 ( select 1 yourColumn from dual union all
  select 2 from dual union all
   select 4 from dual union all
   select 8 from dual
 )
 select EXP(SUM(LN(yourColumn))) As ColumnProduct from yourTable

Alternativ funktioniert das Ganze auch mit einer LOG-Funktion:


Code:
with yourTable as
 ( select 1 yourColumn from dual union all
  select 2 from dual union all
   select 4 from dual union all
   select 8 from dual
 )
 select EXP(SUM(LOG(yourColumn))) As ColumnProduct from yourTable
 
In PG könnte man sich einfach einen solchen Operator definieren:

Code:
test=# select * from demo;
 val
-----
   2
   3
   4
   5
   6
(5 rows)

test=*# CREATE AGGREGATE mul(bigint) ( SFUNC = int8mul, STYPE=bigint );
CREATE AGGREGATE
test=*# select mul(val) from demo;
 mul
-----
 720
(1 row)
 
Werbung:
Zurück
Oben