Top 5 with above average – Power Pivot Trick
Welcome to Power Mondays. Every Monday, learn all about Power BI, Power Query & Power Pivot in full length examples, videos or tips. In this installment, learn how to get top 5 list with a twist.
Let’s say you are analyzing sales data and you want to know who are your top 5 with above average sales persons?
Of course, this is simple, you just create a pivot to see total sales by person and then sort the pivot. First five rows have the answer you need. You can even apply a value filter > top 5 to show only their data.
But what if there is a twist in the story?
You need to show top 5 sales people (by order quantity) with above average orders, like below:
Now things get interesting. We couldn’t create a regular pivot to get this answer. So what next?
Calculating Top 5 with Above Average sales in Power Pivot
We can use Power Pivot to answer such questions elegantly. Read this 3 step tutorial to learn the process.
1. Arrange the data and send it to model
Let’s say your sales data looks like this. First column is the name of sales person and second column is order quantity. Convert your data to a table.
Now insert a pivot from this table. Make sure you enabled the “Add this data to data model” option so we can build measures thru Power Pivot.
2. Create measures to find out “Above average orders”
Go to Pivot table field list and right click on the table name. You will see “Add measure” option. Click on it.
We will create 3 measures.
- Order Count:= COUNTROWS(data)
- Average Order Size := CALCULATE(AVERAGE(data[Orders]), ALL(data))
- Order Count > Avg. Order Size := CALCULATE([Order Count], FILTER(data, data[Orders] > [Average Order Size]))
Let’s understand these measures:
- Order Count: This simply counts the rows in data table. As each row is one order, you get order count.
- Average Order Size: This tells us the average order size for ALL orders ; hence the ALL(data)
- Order Count > Avg. Order Size: This calculates [Order Count] (ie row count) by first filtering orders that are > [Average Order Size]. So we end up counting orders where the order size is more than the total average.
3. Set up the pivot and apply top 5 filter
Now that we calculated all the necessary bits, let’s put this in to action.
- Add sales person to row labels and add Order count > Avg. order size to values area
- Now go to filter on “Sales Person” > Value Filters > Top 10…
- Set up the top 5 value filter as shown below.
You are done. You will get top 5 sales persons by above average order count. Feel free to reverse the top 5 to bottom 5 or calculate some other measures.
Download top 5 with a twist – Example workbook
Click here to download top 5 with a twist example workbook. Examine the measures by going to Data > Manage Data Model or use them in a pivot. Go ahead and create some other measure and test it.
More DAX for you…
If you are learning Power Pivot, check out these examples too:
- How to get percentage of something calculations in Excel Pivot Tables
- Distinct count and blanks with Power Pivot
- Calculating top n, bottom n, others as measures [powerpivotpro]
- And of course, introduction to DAX if you are new.
Thanks to @mjm8686’s tweet which inspired this post.
My name is Chandoo. Thanks for dropping by. My mission is to make you awesome in Excel & your work. I live in Wellington, New Zealand. When I am not F9ing my formulas, I cycle, cook or play lego with my kids. Know more about me.
Thank you and see you around.
Leave a Reply
|« Announcing Excel School v2.0 – Quick intro and details inside||Make funky and creative hand-drawn chart in Excel – Quick tutorial »|