Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
cancel
Showing results for 
Search instead for 
Did you mean: 
muniyandi
Creator III
Creator III

Using Aggr Function Top N

I need aggr function clarification . i has displayed Top 5 , Bottom 5 in the calculated dimension.it's based on Amount2 Value

Top 5 = if(Aggr(rank(Sum(Amount2))<=5,Name),Name)

Bottom 5 = if(Aggr(rank(-Sum(Amount2))<=5,Name),Name)

Now i have problem on some cases Below mentioned my demo data. Look Name C  Records,

My formula baseon Amount2 . So Name C have high value and getting top. my problem is one condition check Result (Sum(Amount1/Amount2) ) is not equal to zero and null.

Where to apply Sum(Amount1/Amount2) this formula.

Below mentioned my demo data.

NameAmount1Amount2Result
A10020000.05
B-301000-0.03
C0600000
D2000-400-5
E00#DIV/0!
F3500#DIV/0!
G-400200-2
H60120000.005
I350.821242.62056
J0.42120.7630.552031
K1281.5
L0-10000
M-900#DIV/0!
N30230.9930.129874
O6277820.007967
P800-32-25
Q-23-73.285714
R1000#DIV/0!
S429500.044211
T50082700.060459
1 Solution

Accepted Solutions
jagan
Partner - Champion III
Partner - Champion III

Hi Mathew,

Try like this

Top 5 = if(Aggr(rank(Sum({<Amount2-={0}, Amount1-={0}>}Amount2))<=5,Name),Name)

Bottom 5 = if(Aggr(rank(-Sum({<Amount2-={0}, Amount1-={0}>} Amount2))<=5,Name),Name)

Or try like this

Top 5 = if(Aggr(rank(Sum(If(Alt(Amount1/Amount2) <> 0, Amount2))<=5,Name),Name)

Bottom 5 = if(Aggr(rank(-Sum(If(Alt(Amount1/Amount2) <> 0, Amount2))<=5,Name),Name)

Regards,

Jagan.

View solution in original post

15 Replies
its_anandrjs
Champion III
Champion III

Then Try expression

If( Sum(Amount1/Amount2) = 0, 0, Sum(Amount1/Amount2) )

jagan
Partner - Champion III
Partner - Champion III

Hi Mathew,

Try like this

Top 5 = if(Aggr(rank(Sum({<Amount2-={0}, Amount1-={0}>}Amount2))<=5,Name),Name)

Bottom 5 = if(Aggr(rank(-Sum({<Amount2-={0}, Amount1-={0}>} Amount2))<=5,Name),Name)

Or try like this

Top 5 = if(Aggr(rank(Sum(If(Alt(Amount1/Amount2) <> 0, Amount2))<=5,Name),Name)

Bottom 5 = if(Aggr(rank(-Sum(If(Alt(Amount1/Amount2) <> 0, Amount2))<=5,Name),Name)

Regards,

Jagan.

Not applicable

Hi Mathew,

You can use

Top 5 = if( Amount1/Amount2<>0 and not IsNull(Amount2)  and Aggr(rank(Sum(Amount2))<=5,Name),Name)

Thanks,

Garry

muniyandi
Creator III
Creator III
Author

Hi Jegan,

First Calculate the sum(Amount1/Amount2) is only number and not equal to zero. after calculate the rank.

muniyandi
Creator III
Creator III
Author

Hi Gaurav ,

sum(Amount1/Amount2) <>0 and Not Isnull(sum(Amount1/Amount2) ) function use and again use aggr function . thats my problem.

muniyandi
Creator III
Creator III
Author

Hi Jegan,

your are close to reach result. sum(amount1/Amount2)<>0 and not isnull(sum(amount1/Amount2)) how to use your expression.

Thanks.

jagan
Partner - Champion III
Partner - Champion III

Hi,

Try like this

Top 5 = if(Aggr(rank(Sum(If(Alt(Amount1/Amount2, 0) <> 0, Amount2))<=5,Name),Name)

Bottom 5 = if(Aggr(rank(-Sum(If(Alt(Amount1/Amount2, 0) <> 0, Amount2))<=5,Name),Name)

Regards,

Jagan.

muniyandi
Creator III
Creator III
Author

Hi Jegan,

top it's fine. I have another dobut on bottom condition calcuation.

Bottom time we have sum of value getting - minus value , again we put front of -minus,

this time ex ( -sum(-500)= +500) how to solve this issues.

we need to write if condition (if (sign(sum(amount2))=-1,sum(amount2),-sum(amount2)) ?

Thanks,

jagan
Partner - Champion III
Partner - Champion III

Hi

sum(amount2) * -1


Regards,

Jagan.