Qlik Community

New to QlikView

Discussion board where members can get started with QlikView.

Announcements
Modernize Your QlikView Deployment webinar, Nov. 3rd. REGISTER
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Creator III
Creator III

sum last 3 days sale

Dears,

I have dummy data as below



and I need to calculate last 3 days sales by date, expect output:




please help , thanks

9 Replies
Highlighted

Try this

RangeSum(Above(Sum(Sales), 0, 3))

Highlighted

Or this

RangeSum(Above(Sum({<Date>}Sales), 0, 3)) * Avg(1)

Highlighted
Contributor II
Contributor II

Hey Sunny,

Can you explain why you would use this expression?

Highlighted

I guess can I ask you why would you not want to use this if it gives you what you want? I mean do you have an alternative way to do it? I know this can be done with The As-Of Table or something similar in the script, but do you have a better way to do this?

Highlighted
Contributor II
Contributor II

I'm sorry, I was just wondering what the differences between your first suggestion and second suggestion are. I didnt understand the avg(1). Thought I might learn a thing or two.

Highlighted

Without selection in Date field the result of the two expression will be the same. The difference arises when you select a single date or multiple dates. 1st expression will restart the accumulation based on selection, where as the 2nd expression will only show the dates you have selected, but will show accumulation from the beginning of time.

Highlighted
Creator II
Creator II

Hi Dave,

You can solve your problem without RangeSum function, for this you should do the following:

1. Create additional expression Sum(Sales)

2. Use  Accumulation and Accumulate 3 Steps Back

Community.png

After this you will get following result:

Community2.png

Thanks,

Vitalii

Highlighted
Creator III
Creator III

Hi Sunny

the 2nd expression is so cool ! it's really a smart use of Avg(1)

the only problem is , user can not order the table by Date desc , or order by sales volume right ?

is there any chance to fix this ? or we have to do it in Script ?

Highlighted

If it has to be by Date descending... then just change Above() to Below()

RangeSum(Below(Sum({<Date>}Sales), 0, 3)) * Avg(1)