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

#1 15/03/2012 13:09:01

Tony
Membre

Calcul avec des sum et des group by

Bonjour,

Dans une table, j'ai des champs contenant des nombres ou des valeurs null

Cette requête me fait correctement la somme des champs

  select client , sum(montant_vendu),  sum(montant_facture)
  from matable
  group by client

Mais si je veux calculer avec cette requête, la différence des deux montants, cela ne fonctionne que si les montants contiennent des valeurs :

  select client , sum(montant_vendu),  sum(montant_facture),  sum(montant_vendu)-sum(montant_facture)
  from matable
  group by client

Si le champ 'sum(montant_facture)' est vide, le resultat sera vide alors qu'il devrait être égale à sum(montant_vendu)

Je pense que c'est un problème de conversion de valeurs null en nombre, mais je n'y arrive pas.

Merci d'avance pour votre aide

Hors ligne

#2 15/03/2012 14:01:54

gleu
Administrateur

Re : Calcul avec des sum et des group by

PostgreSQL ne peut pas transformer une valeur NULL en une valeur non NULL. Quelle valeur devrait-il prendre vu que NULL, c'est inconnu ?

Par contre, vous pouvez lui dire de remplacer une valeur NULL par une autre grâce à la fonction coalesce. Par exemple coalesce(expression, 0) aura comme résultat 0 si expression est NULL et expression dans les autres cas.


Guillaume.

Hors ligne

#3 15/03/2012 14:02:14

rjuju
Administrateur

Re : Calcul avec des sum et des group by

Bonjour.

Vous pouvez régler le problème en faisant des sum(COALESCE(champ,0.0)), ce qui remplacera les valeurs nulles par 0.

Hors ligne

#4 15/03/2012 14:03:59

Tony
Membre

Re : Calcul avec des sum et des group by

Merci beaucoup.

Ça fonctionne maintenant avec COALESCE.

Hors ligne

Pied de page des forums