Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

média entre a soma das linhas de uma coluna

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.


Labels (1)
6 Replies
Not applicable
Author

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

Not applicable
Author

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.

Not applicable
Author

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

Not applicable
Author

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

cesaraccardi
Specialist
Specialist

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

cesaraccardi
Specialist
Specialist

A formula acima deve servir tanto para o objeto de texto quanto para a tabela, basta remover a formatacao do num() e pode desmarcar a opcao media de linhas.