Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
chadliagabsi
Creator II
Creator II

La moyenne dans un TCD

Bonjour,

J'ai un tableau dynamique croisé et je veux calculer la somme de chaque mois et en bout du tableau la moyenne sur 12 mois.

Comment pourrai je créer mes expressions dans les totaux ou y a t'il une façon à le faire.

Merci.

test.png

1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour,

J'ai illustré ci-dessous les valeurs retournées par les fonctions ColumnNo(), Dimensionality() et SecondaryDimentionality()

Dans ton cas, on voit bien que c'est les cellule qui ont SecondaryDimensionality = 1 qui nous intéresse. Pour ces cellules, on va calculer la moyenne annuelle des mois et simplement la somme pour les autres :

If( SecondaryDimensionality() = 1,
   
Sum(Value)/Count(DISTINCT Mois), 
   
Sum(Value
)
)

community_1427660.png

J'ai joint l'appli si tu veux faire des test de ton côté

View solution in original post

7 Replies
Anonymous
Not applicable

Bonjour,

Essaye quelque chose comme cela :

if(columnno()<>0,sum(Valeur),avg(Valeur))

Sur les sous-totaux de ligne tu auras une somme. Pour le total des colonnes en bout tu auras la moyenne

chadliagabsi
Creator II
Creator II
Author

Bonjour,

Tu veux dire j'ajoute une nouvelle expression car quand j'ai ajouté une nouvelle expression, elle m'a donnée un résultat par mois et je veux obtenir juste sum par direction et  moyenne annuelle à la fin.

Anonymous
Not applicable

Non, ce n'est pas une nouvelle expression, tu remplaces ton expression actuelle par celle que je propose.

chadliagabsi
Creator II
Creator II
Author

J'ai essayé la formule ci-dessous et toujours le meme résultat.

Question: Est ce que je dois garder les totaux crées?

Je l'ai testé en garandant les totaux.

if(columnno()<>0,sum( if(SecondaryDimensionality() > 1,aggr(

if(MOTIF<>'Congé parental' and TEMPS_TRAVAIL<> 0

,sum(DISTINCT(TEMPS_TRAVAIL/100)))

,MOIS,MATRICULE_AGENT,MOTIF,ANNEE,TEMPS_TRAVAIL,),

aggr(if(MOTIF<>'Congé parental'and TEMPS_TRAVAIL<> 0 ,

avg(DISTINCT(TEMPS_TRAVAIL/100)))

,MOIS,MATRICULE_AGENT,MOTIF,ANNEE,TEMPS_TRAVAIL)) ),

avg(if(SecondaryDimensionality() > 1,

aggr(if(MOTIF<>'Congé parental' and TEMPS_TRAVAIL<> 0

,sum(DISTINCT(TEMPS_TRAVAIL/100)))

,MOIS,MATRICULE_AGENT,MOTIF,ANNEE,TEMPS_TRAVAIL,),

aggr(if(MOTIF<>'Congé parental'and TEMPS_TRAVAIL<> 0 ,

avg(DISTINCT(TEMPS_TRAVAIL/100)))

,MOIS,MATRICULE_AGENT,MOTIF,ANNEE,TEMPS_TRAVAIL)) ) )

sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour,

J'ai illustré ci-dessous les valeurs retournées par les fonctions ColumnNo(), Dimensionality() et SecondaryDimentionality()

Dans ton cas, on voit bien que c'est les cellule qui ont SecondaryDimensionality = 1 qui nous intéresse. Pour ces cellules, on va calculer la moyenne annuelle des mois et simplement la somme pour les autres :

If( SecondaryDimensionality() = 1,
   
Sum(Value)/Count(DISTINCT Mois), 
   
Sum(Value
)
)

community_1427660.png

J'ai joint l'appli si tu veux faire des test de ton côté

chadliagabsi
Creator II
Creator II
Author

Je te remercie infiniment ça fonctionne nickel ! Juste pour avoir la moyenne de 12 mois j'ai changé

count (distinct(mois)) par 12.

chadliagabsi
Creator II
Creator II
Author

Bonjour Sébastien,

je reviens vers toi car je suis coincé,

dans mon calcul ETPT ça fonctionne bien mais ETP ne me donne pas le résultat désiré, parce que pour ETPT j'ai utilisé le nombre des jours travaillés par mois et par direction. Pour l'ETP si une personne a changé sa direction au milieu du mois un nouveau motif va être créer. donc pour calculer l'ETP par mois il me faut la moyenne par mois et par direction( par ligne et par colonne) . Mon expression utilisée donne la moyenne par direction cumulé( tableau 1).

D'Après moi elle donne pour la première ligne 0.47(tableau .1) car  quand j'ai testé et ajouté le motif (tableau 2) la somme pour novembre est devenu 1.6 vu que l'agent a travaillé dans deux directions différentes dans un seul moi. Quand je supprime le motif (tableau 1 normalement j'ai 0.4 pour direction 1 et 0.4 pour direction 2 hors que ce n'est pas le cas. j'ai pu calculé la moyenne en colonne mais les lignes toujours pas.

Expression :

If( SecondaryDimensionality()> 1,  avg(if(MOTIF<>'Congé parental',TEMPS_TRAVAIL/100 )) ,

sum(if(MOTIF<>'Congé parental',TEMPS_TRAVAIL/100 ))/12) 

J'ai essayé de faire un regroupement par moi ca ma donner 0.8 pour chaque direction.

If( SecondaryDimensionality()> 1,  avg(if(MOTIF<>'Congé parental',TEMPS_TRAVAIL/100 )) ,

avg(aggr(if(MOTIF<>'Congé parental',TEMPS_TRAVAIL/100 ),MOIS))

Merci pour ton aide.

test.png