4 Replies Latest reply: Oct 15, 2014 7:00 AM by Vincent Maloir RSS

    Problème de somme partielle

      Bonjour,

       

      Voici mon petit soucis sur lequel je penche depuis plus d'une semaine...

       

      Mon tableau croisé dynamique est composé de trois dimensions: représentant, client et n° de commande.

       

      Je dois y calculer en € la valeur moyenne de mes devis.

      Pour la dimension n° de commande, je prends la moyenne de tous les devis réalisés. Pour la dimension client, je prend la moyenne des valeurs précédemment calculées.

      Finalement pour la dimension représentant, je pensais faire la même chose, mais pour une raison inconnu, qlikview ne me calcule pas la moyenne sur les clients, mais sur les commande, ce qui vient fausser mon résultat...

       

      Voici l'expression que j'utilise:

      if(Dimensionality()=3, aggr(sum(JD_PX_TOTAL)/count(JD_CODUNIQ), JD_NDEVIS),

        if(Dimensionality()=2, avg(aggr(sum(JD_PX_TOTAL)/count(JD_CODUNIQ), JD_NDEVIS)),

        if(Dimensionality()=1, sum(aggr(avg(aggr(sum(JD_PX_TOTAL)/count(JD_CODUNIQ), JD_NDEVIS)), JD_REF_CLIENT))

      )))

       

      Je vous avoue que j'ai essayé plusieurs expressions différentes depuis la semaine passée et rien n'y fais, je n'arrive pas à additionner les moyennes de chaque client pour en reprendre une moyenne pour le représentant

        • Re: Problème de somme partielle
          Philippe MICHEL

          Bonjour,

           

          Peux tu mettre un fichier d'exemple ?

           

          Merci

          • Re: Problème de somme partielle
            Yves Ndjoli

            Tableau normal:

            Dimension: JD_CODUNIQ

            Formule pour les devis: aggr(NODISTINCT avg(JD_PX_TOTAL),JD_NDEVIS)

            Formule pour les clients: aggr(NODISTINCT avg(JD_PX_TOTAL), JD_REF_CLIENT)

             

            Pivot:

            Dimensions: JD_CODUNIQ; JD_NDEVIS; JD_REF_CLIENT

            Formules:

            Formule pour les devis: aggr(NODISTINCT avg(JD_PX_TOTAL),JD_NDEVIS)

            Formule pour les clients: aggr(NODISTINCT avg(JD_PX_TOTAL), JD_REF_CLIENT)

              • Re: Re: Problème de somme partielle

                Voici ce que j'ai utilisé:

                 

                if(count({<JD_DATE=, JD_NDEVIS=P(JD_NDEVIS), JD_NVARIANT_FABR={1}>} JD_CODUNIQ) = count ({<JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_CODUNIQ),

                  (

                  if(Dimensionality()=3, aggr(NODISTINCT avg({<JD_NVARIANT_FABR={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_NDEVIS),

                  if(Dimensionality()=2, aggr(NODISTINCT avg({<JD_NVARIANT_FABR={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_NDEVIS),

                  if(Dimensionality()=1, aggr(NODISTINCT avg({<JD_NVARIANT_FABR={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_CODE_REP))))

                  ),

                  (

                  if(Dimensionality()=3, aggr(NODISTINCT avg({<JD_NVARIANT_COMM={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL),JD_NDEVIS),

                  if(Dimensionality()=2, aggr(NODISTINCT avg({<JD_NVARIANT_COMM={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_NDEVIS),

                  if(Dimensionality()=1, aggr(NODISTINCT avg({<JD_NVARIANT_COMM={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_CODE_REP))))

                  )

                )

                 

                Mais comme ce n'était pas correcte, j'ai essayé avec ceci (la dernière dimension n'est pas juste), mais ça ne fonctionne pas non plus :/

                 

                if(count({<JD_DATE=, JD_NDEVIS=P(JD_NDEVIS), JD_NVARIANT_FABR={1}>} JD_CODUNIQ) = count ({<JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_CODUNIQ),

                  (

                  if(Dimensionality()=3, aggr(NODISTINCT avg({<JD_NVARIANT_FABR={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_NDEVIS),

                  if(Dimensionality()=2, aggr(avg(aggr(NODISTINCT avg({<JD_NVARIANT_FABR={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_NDEVIS)), JD_REF_CLIENT),

                  if(Dimensionality()=1, aggr(NODISTINCT avg({<JD_NVARIANT_FABR={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_CODE_REP))))

                  ),

                  (

                  if(Dimensionality()=3, aggr(NODISTINCT avg({<JD_NVARIANT_COMM={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL),JD_NDEVIS),

                  if(Dimensionality()=2, aggr(avg(aggr(NODISTINCT avg({<JD_NVARIANT_COMM={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_NDEVIS)), JD_REF_CLIENT),

                  if(Dimensionality()=1, aggr(NODISTINCT avg({<JD_NVARIANT_COMM={1}, JD_DATE=, JD_NDEVIS=P(JD_NDEVIS)>} JD_PX_TOTAL), JD_CODE_REP))))

                  )

                )