A Simple Way of Quantiling Process in T-SQL by using Window Function and Ceiling Function
December 11, 2015 at 6:35 AM
—
Steven Wang
In business analysis, it is very common to break sales into different
quantile groups and then it can be used for segmentation purpose. The most
commonly used quantiles are:
- Quintiles which creates 5 equal size groups
- Deciles which creates 10 equal size groups
Occasionally, Ventiles (20 groups) and Percentiles (100
groups) will used.
Quantiling process is very powerful when 2 dimensional of
sales data is available, like product sales and market sales. In business it is
very common to use quantile matrix to perform the account segmentation. An example
of segmentation definition can be based on a 2 X 2 deciling matrix like below:
Even this is a very common process, it is indeed not a straightforward
simple calculation to get quantile values in SQL server. There are many ways we
can do to calculate such, but I found that use window function in conjunction
with CEILING function is the easiest way to calculate quantile value. Let’s try. I
will use a deciling process to start with.
The first step to calculate decile value for a specific
object (Account, Product etc) is to calculate cumulative values and then
calculate the cumulative percentage.
This will generate the cumulative product sales value and its cumulative percentage. the top 10 records as below:
Now the question is how can we assign a decile value based on the cumulative percentage value? there are many ways to do it. But as I found that there is a very simple way to do it by using SQL CEILING function:
You can randomly check the results:
Based on this deciling calculation, we can generalize the quantiling calculation on any quantile number between 1 and 100.
I hope this tip is useful and please see the attached scripts if you want to have a try.
Thanks.
Quantile_Calculation_Script.sql (1KB)
e522b4af-c055-4479-a2e3-cea012e66ac8|0|.0|96d5b379-7e1d-4dac-a6ba-1e50db561b04
Posted in: T-SQL | Window Functions
Tags: