Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
victorsantos
Contributor II
Contributor II

Dividir valor de coluna por quantidade de registros de outro campo

Boa tarde, gente. Estou com a seguinte situação: ao recolher os dados da base onde trabalho, vem um campo de valor de turma de capacitação, ValorTurmaCapacitacao. Só que o nível de granularidade da tabela que estou montando na aplicação Qlik é por colaborador. Com isso, eu preciso dividir o ValorTurmaCapacitacao pela quantidade de linhas por identificação do evento_turma, Chave_Evento, de forma que conste em cada linha o valor pago por colaborador para determinada capacitação e turma. Já pensei como fazer isso por set analysis no front, por aggr no front, mas nenhuma das formas está funcionando corretamente.  Aí resolvi pedir ajuda por formas de fazer isso aqui, preferencialmente no script de carga, mas qualquer solução é bem vinda e me ajuda muito.

pedaço da carga para ajudar a visualizar melhor como seria essa tabela que estou falando:

Eventos_Capacitacao:
LOAD
CodEventoRealizado&'-'&CodTurma as Chave_Evento,
CodEmpregado,
NomeParceiro,
NomeCapacitacao,
CargaHorariaCapacitacao,
ValorTurmaCapacitacao,
;
SQL SELECT [...]

1 Solution

Accepted Solutions
diogoduarte
Partner - Contributor III
Partner - Contributor III

Victor, se eu entendi bem, você precisa saber quantas vezes o valor de "Chave_Evento" se repete nos seus dados pra saber "quantas pessoas" participaram no evento e poder dividir o valor de "ValorTurmaCapacitacao" por essa quantidade, correto?

Se for isso, para resolver no script penso que você pode carregar seus dados como esta fazendo, depois faz um group by nessa tabela nova que você gerou fazendo um count do "Chave_Evento" e ai faz um Left Join pra sua primeira tabela para incluir o valor do count e depois um novo load na tua resident para fazer o calculo.

auxEventos:
LOAD
CodEventoRealizado&'-'&CodTurma as Chave_Evento,
CodEmpregado,
NomeParceiro,
NomeCapacitacao,
CargaHorariaCapacitacao,
ValorTurmaCapacitacao,
;
SQL SELECT [...]

Left Join (auxEventos) Load
	Chave_Evento,
	Count(Chave_Evento)	as Qtd_Participantes
Resident  auxEventos
Group by Chave_Evento;

Eventos_Capacitacao:
Load
	*,
	ValorTurmaCapacitacao / Qtd_Participantes	as Valor_Participante
Resident auxEventos;

Drop Table auxEventos;

View solution in original post

3 Replies
victorsantos
Contributor II
Contributor II
Author

Gente, procurei ser o mais claro possível e colocar as informações necessárias para possibilitar uma resposta. Como ninguém respondeu até agora, pergunto: faltou alguma coisa importante?

diogoduarte
Partner - Contributor III
Partner - Contributor III

Victor, se eu entendi bem, você precisa saber quantas vezes o valor de "Chave_Evento" se repete nos seus dados pra saber "quantas pessoas" participaram no evento e poder dividir o valor de "ValorTurmaCapacitacao" por essa quantidade, correto?

Se for isso, para resolver no script penso que você pode carregar seus dados como esta fazendo, depois faz um group by nessa tabela nova que você gerou fazendo um count do "Chave_Evento" e ai faz um Left Join pra sua primeira tabela para incluir o valor do count e depois um novo load na tua resident para fazer o calculo.

auxEventos:
LOAD
CodEventoRealizado&'-'&CodTurma as Chave_Evento,
CodEmpregado,
NomeParceiro,
NomeCapacitacao,
CargaHorariaCapacitacao,
ValorTurmaCapacitacao,
;
SQL SELECT [...]

Left Join (auxEventos) Load
	Chave_Evento,
	Count(Chave_Evento)	as Qtd_Participantes
Resident  auxEventos
Group by Chave_Evento;

Eventos_Capacitacao:
Load
	*,
	ValorTurmaCapacitacao / Qtd_Participantes	as Valor_Participante
Resident auxEventos;

Drop Table auxEventos;
victorsantos
Contributor II
Contributor II
Author

Nossinhora. Muito mas muito obrigado mesmo. Resolveu meu problema e ainda me deu ideias de como resolver vários problemas semelhantes.