Skip to main content
Announcements
The way to achieve your own success is the willingness to help somebody else. Go for it!
cancel
Showing results for 
Search instead for 
Did you mean: 
msludo
Contributor III
Contributor III

Agregação condicional com IF

Boa tarde, pessoal,

Estou fazendo os exercícios do livro QlikView Your Business e estou com a seguinte dificuldade no exercício 4.28, em que tenho que fazer o preço médio de vendas acumulado no ano (YTD Average Sales Price). Em exercício anterior, isso foi calculado da seguinte forma:

YTD Average Sales Price = sum(# Amount) / sum(# Invoiced Quantity)

Agora, como faço o acumulado no ano? Tentei a seguinte fórmula:

sum( IF(InYearToDate([Invoice Date], '12/31/2014',0),  sum(# Amount) / sum(# Invoiced Quantity)  )   )


porém dá a seguinte mensagem de erro: nested agregation not allowed.


Como resolver isso?



Obs.: utilizo QlikSense

Labels (2)
1 Reply
felipedl
Partner - Specialist III
Partner - Specialist III

Olá Ludo,

É possível realizar a operação através de set analysis:

Digamos que você tem dados assim:

data:

load *,

Num([Invoice Date]) as [Num Invoice Date],

Year([Invoice Date]) as [Year Invoice Date];

Load * Inline

[

Invoice Date,#Amount

01/01/2017,100

01/06/2017,200

01/01/2018,300

01/02/2018,400

01/03/2018,350

01/04/2018,406

01/05/2018,340

01/06/2018,460

01/07/2018,311

01/08/2018,30

01/09/2018,355

01/10/2018,6

01/11/2018,1000

01/12/2018,666666

01/01/2019,691390812839

];

Você pode usar set analysis para pegar somente as datas que são do ano e menor que a data atual através de:

sum({<[Year Invoice Date]={"$(=Year(Today()))"},[Num Invoice Date]={"<=$(=Num(Today()))"}>}#Amount)

/

count({<[Year Invoice Date]={"$(=Year(Today()))"},[Num Invoice Date]={"<=$(=Num(Today()))"}>}[Invoice Date])

Isso te dará apenas os valores que são até a data, através de set analysis, de modo a ficar como no print a seguir:

sample.png