Vous n'êtes pas identifié(e).

#1 Re : PL/pgSQL » Fonction d'agrégat "produit" » 04/10/2010 13:58:38

Super tout marche très bien maintenant! smile

Merci !

#2 Re : PL/pgSQL » Fonction d'agrégat "produit" » 04/10/2010 13:43:15

Bonjour à tous,

Une solution m'a été proposé :

CREATE AGGREGATE mmul(int4)
(
  sfunc = int4mul,
  stype = int4
);

Le problème est que la fonction utilisée n'est opérationnelle que sur des nombres entiers. Existe t'il une fonction similaire permettant l'utilisation de nombres réels?

#3 PL/pgSQL » Fonction d'agrégat "produit" » 01/10/2010 11:20:10

d.guillerme
Réponses : 4

Bonjour,

Existe-t-il dans postgresql une fonction d'agrégat permettant de faire un produit des valeurs d'un champ dans une table, un peu de la même manière que Sum permet de faire une somme?

Une fonction du genre: "select prod(champ_nb) from T group by champ_x"

avec comme résultat le produit des valeurs de champ_nb. Exemple
Code :

champ_x | champ_nb
A             2
A             5
A             4
A             3
B             2
B             6
B             2

Résultat:
A 120 (2*5*4*3)
B 24 (2*6*2)

Une solution est possible en passant par l'exponentielle de la somme des logarithmes des enregistrements "exp(sum(ln(x)))". Mais cette opération n'est pas vraiment satisfaisante dans les cas ou certains enregistrements ont une valeur nulle et renvoie donc systématiquement une erreur.

Bien cordialement.

Pied de page des forums

Propulsé par FluxBB