Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Mon 03 October 2016 15:10

scritch56
Juste Inscrit !
Date d'inscription: 25 Feb 2015
Messages: 8

QGIS: somme de champs dont certains sont null

Bonjour,
Je n'ai pas trouvé la réponse à mon problème.
Je cherche à créer un nouveau champ en additionnant d'autres.
Seulement certains de ces champs sont parfois vides.
Et je ne souhaite pas remplacer ces champ vide par une valeur 0. Je préfère qu'il reste null (cohérent avec mes données).
Quelle serait la formule pour additionner ces champs en sachant qu'il peut y avoir des valeurs null? Quand je fais une addition simple, il me met un résultat null quand un des champs est null (logique). il faudrait peut être une formule avec des conditions mais je n'y arrive pas.
merci

Hors ligne

 

#2 Mon 03 October 2016 15:45

Sylvain PIERRE
Participant assidu
Lieu: Strasbourg
Date d'inscription: 6 Sep 2005
Messages: 170

Re: QGIS: somme de champs dont certains sont null

Bonjour,

Il faut utiliser la fonction coalesce:

coalesce( "mon champ" , 0)

Sylvain

Hors ligne

 

#3 Mon 03 October 2016 16:03

scritch56
Juste Inscrit !
Date d'inscription: 25 Feb 2015
Messages: 8

Re: QGIS: somme de champs dont certains sont null

Yes merci,
par contre cela me pose problème quand je veux diviser par une autre champ qui lui aussi peut être null:
(coalesce(   "champ 1"   , 0)+coalesce(   "champ 2"   , 0))/coalesce(   "champ 3"   , 0)
l'addition fonctionne bien mais avec la division il met null en résultat.
Il faudrait qu'il ne fasse pas la division quand la valeur du champ 3 est nulle ou alors il faudrait remplacer le "null" par "1" mais juste dans l'expression (pas dans les champs).
Mais je sèche encore.
Merci en tout cas.

Hors ligne

 

#4 Mon 03 October 2016 16:27

Sylvain PIERRE
Participant assidu
Lieu: Strasbourg
Date d'inscription: 6 Sep 2005
Messages: 170

Re: QGIS: somme de champs dont certains sont null

Sur le fond diviser par 0, ce n'est pas très orthodoxe! De plus si vous n'avez pas de valeur pour le dénominateur de votre division cela est une information et il me semble logique que le résultat soit nul...

Hors ligne

 

#5 Mon 03 October 2016 16:32

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3807

Re: QGIS: somme de champs dont certains sont null

Bonjour,

Il faudrait qu'il ne fasse pas la division quand la valeur du champ 3 est nulle


Dans ce cas,

Code:

case when "champ 3" is not null then coalesce(   "champ 1"   , 0)+coalesce(   "champ 2"   , 0) end

ou alors il faudrait remplacer le "null" par "1" mais juste dans l'expression (pas dans les champs)


Reférez-vous à l'aide de la fonction coalesce qui indique : "Renvoie la première valeur non-NULL de la liste en expression." En d'autres termes, avec coalesce(   "champ 1"   , 0) ,  lorsque la valeur du "champ 1" est nulle, alors ça renvoie 0. Vouloir renvoyer 1 coule de source amha, soit coalesce(   "champ 1"   , 1)
Mais comme le signale Sylvain PIERRE, la valeur de ce résultat dans votre BD est "questionnable".

Hors ligne

 

#6 Tue 04 October 2016 10:23

scritch56
Juste Inscrit !
Date d'inscription: 25 Feb 2015
Messages: 8

Re: QGIS: somme de champs dont certains sont null

Bonjour,
Mais c'est bien sûr... Merci pour vos réponses. C'était pourtant évident mais je n'y étais plus hier....
Je comprends votre questionnement. Ce dernier champ n'est null que dans quelque cas. Du coup en le remplaçant par 1 dans l'expression, c'est comme si je ne le prenais pas en compte pour mes calculs donc cela reste pertinent. Cela m'évite de différencier les cas avec ou sans ce champ, et du coup je peux faire un calcul général qui correspond à mes besoins.
Merci pour votre aide.

Dernière modification par scritch56 (Tue 04 October 2016 10:24)

Hors ligne

 

Pied de page des forums

Powered by FluxBB