6 Replies Latest reply: Jul 13, 2016 11:08 AM by Cesar Accardi RSS

    média entre a soma das linhas de uma coluna

    Dharion Soares

      Boa tarde, amigos.

       

      Sou iniciante no QlikView. Se possível, agradeço a ajuda de vocês no seguinte problema:

       

      Tenho uma tabela simples (img-01.png). Na coluna SINISTRALIDADE eu estou obtendo o resultado em porcentagem da divisão

      das colunas (Custo Assistencial / Receita). Porém, no total geral de SINISTRALIDADE a tabela traz o resultado entre o somatório de custo assistencial / receita. Eu gostaria de obter a média entre a soma dos valores da coluna (de acordo com o período, que nesse caso está de 201502 a 201601), Seria a soma das porcentagens da coluna sinistralidade dividido por 12.


      Eu consegui colocar essa média marcando a opção "Média de Linhas", na aba de expressão (img-02.png). Porém, esse resultado eu precisaria também para utilizar em um objeto de texto, porém só consegui trazer a média entre a divisão das colunas (custo assistencial / receita).


      Tentei utilizar as fórmulas AVG com Agregação por Período, porém, aparece um traço, não atribuindo valor a coluna.


      Desde já, agradeço.


        • Re: média entre a soma das linhas de uma coluna
          rodrigo silva

          Para o objeto de texto vc pode usar

           

          NUM( (SUM(Custo Assistencial)/SUM(Receita))/12,'#.##0,00%')

           

          Não esqueça de usar os set analys nos sum de custo e receita para trazer apenas os ultimos 12 meses

            • Re: média entre a soma das linhas de uma coluna
              Dharion Soares

              Muito obrigado pela ajuda, Rodrigo.

               

              Eu tentei dessa forma mas não encontrei o valor correto. A fórmula que utilizei foi a seguinte:

               

              = NUM( (SUM({<COD_BENEFICIARIO_BEN = {'*'} - {'0'}>} IF (PERIODO_PK >= '201503' AND PERIODO_PK <= '201602', VAL_CUSTO_S_PRORATA_FCB)) /

                      SUM({<COD_BENEFICIARIO_BEN = {'*'} - {'0'}>} IF (PERIODO_PK >= '201503' AND PERIODO_PK <= '201602', VAL_REC_RECEB_POR_COMPETENCIA_FCB))) / 12,'#.##0,00%')

               

              O primeiro SUM representa o custo assistencial, em que pego a informação da coluna de uma tabela VAL_CUSTO_S_PRORATA_FCB do banco. A outro SUM representa a Receita, que é a coluna de uma tabela VAL_REC_RECEB_POR_COMPETENCIA_FCB, do banco.

               

              O valor que saiu no objeto de texto foi de 6,89 %, quando na verdade deveria sair 82,94%.

               

              O sentido é esse, mas não consigo detectar o porque que não está funcionando.

                • Re: média entre a soma das linhas de uma coluna
                  rodrigo silva

                  Quando vc faz os valores separados as informações batem?

                  • Re: média entre a soma das linhas de uma coluna
                    rodrigo silva

                    Faça as formulas separadas para ver se os valores batem. Caso os mesmos estejam diferentes é alguma outra coisa (filtro, seleção, dimensão, duplicidade, conceito)

                     

                    SUM({<COD_BENEFICIARIO_BEN = {'*'} - {'0'}, PERIODO_PK ={">=201503<=201602"}>} VAL_CUSTO_S_PRORATA_FCB)

                     

                    SUM({<COD_BENEFICIARIO_BEN = {'*'} - {'0'}, PERIODO_PK ={">=201503<=201602"}>}  VAL_REC_RECEB_POR_COMPETENCIA_FCB)

                     

                    caso os valores estejam ok, junte as formulas

                     

                    ((SUM({<COD_BENEFICIARIO_BEN = {'*'} - {'0'}, PERIODO_PK ={">=201503<=201602"}>} VAL_CUSTO_S_PRORATA_FCB))/

                    (SUM({<COD_BENEFICIARIO_BEN = {'*'} - {'0'}, PERIODO_PK ={">=201503<=201602"}>}  VAL_REC_RECEB_POR_COMPETENCIA_FCB)))/12


                    verifique se o valor da conta da ok,(lembre-se não estará em %) se estiver ok formate a formula com o NUM

                      • Re: média entre a soma das linhas de uma coluna
                        Cesar Accardi

                        Ola Dharion,

                         

                        Eu acredito que voce consiga resolver esse problema utilizando a funcao de agregacao avancada AGGR() para agregar as porcentagens por periodo:

                         

                        num(avg({$<COD_BENEFICIARIO_BEN-={0}>} aggr(sum({$<COD_BENEFICIARIO_BEN-={0}>} VAL_CUSTO_S_PRORATA_FCB)/sum({$<COD_BENEFICIARIO_BEN-={0}>} VAL_REC_RECEB_POR_COMPETENCIA_FCB), PERIODO_PK)),'#.##0,00%')

                         

                        Nao coloquei o filtro de periodo na expressao acima porque como esta agregando por periodo nao precisa fixar 12 meses mas caso vc queira fixar mesmo assim, e so adicionar o modificar de conjunto PERIODO_PK ={">=201503<=201602"}

                         

                        Abracos,

                         

                        Cesar