#1 Fri 30 July 2021 18:42
- Will987
- Participant occasionnel
- Date d'inscription: 23 Jul 2021
- Messages: 12
QGIS: Somme recursif (Somme cumulee)
Bonjour,
Quelqu'un sait comment faire une somme récursive sur QGIS ( La somme entre le champ présent et son précédent) avec la calculatrice de champ ou avec l'éditeur de fonction en python ?
Exemple ci-joint avec la colonne I-lum comme référence, et I-Res-P1 comme colonne résultante.
Je remercie d'avance, ceux qui pourront m'aider.
Dernière modification par Will987 (Fri 30 July 2021 18:43)
Hors ligne
#2 Tue 10 August 2021 10:29
- shirosaki
- Participant actif
- Lieu: Lyon
- Date d'inscription: 30 Mar 2018
- Messages: 125
Re: QGIS: Somme recursif (Somme cumulee)
Bonjour, avec la version 3.20 de QGIS vous pouvez utiliser la formule suivante :
array_sum(
with_variable(
'id_current',
"id",
array_agg(
expression:="length",order_by:="id", filter:="id"<=@id_current)
)
)
https://zupimages.net/viewer.php?id=21/32/0y4b.png
Si vous n'avez pas cette version de QGIS, vous pouvez installer l'extension "array_plus" qui rajoutera des formules pour les array
Dernière modification par shirosaki (Tue 10 August 2021 10:29)
Paul QUESNOT
Hors ligne
#3 Wed 25 August 2021 22:27
- Will987
- Participant occasionnel
- Date d'inscription: 23 Jul 2021
- Messages: 12
Re: QGIS: Somme recursif (Somme cumulee)
Bonjour,
merci pour votre réponse, cela m'a beaucoup aidé . Jusqu'à aujourd'hui, je n'avais remarqué qu'on m'avait répondu.
J'aurai une dernière question : Si j'ai besoin de réaliser une somme cumulée regroupé par rapport a la valeur d'un autre attribut
exemple :
Attribut A | Attribut B | Cumul
22A 10 10
22A 20 30
22B 22 22
Dans cet exemple je réalise une somme cumulée de l'attribut B regroupé par la valeur de l'attribut A
Si c'est possible, comment je dois m'y prendre ?
Hors ligne
#4 Thu 26 August 2021 08:58
- shirosaki
- Participant actif
- Lieu: Lyon
- Date d'inscription: 30 Mar 2018
- Messages: 125
Re: QGIS: Somme recursif (Somme cumulee)
Bonjour,
Dans ce cas là,
il faut rajouter un argument "group_by" à la formule :
Code:
array_sum( with_variable( 'id_current', "id", array_agg( expression:="length",order_by:="id", filter:="id"<=@id_current, group_by:="group") ) )
https://zupimages.net/viewer.php?id=21/34/osnz.png
Dernière modification par shirosaki (Thu 26 August 2021 09:00)
Paul QUESNOT
Hors ligne