#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: 3945
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