Percentile-Based Thresholding
In this lesson, you’ll learn how to use statistical rank to classify data points based on their relative standing within a population.
The Concept
Sometimes, hard-coded thresholds (like "anyone who spends over $100") don't scale as your data grows or changes. Percentile-based thresholding allows you to classify data dynamically. Instead of asking for a specific value, you ask for a "rank-based" label, such as tagging the top 10% of customers as "VIPs" or the bottom 25% of performers as "Needs Review."
By using window functions, we can calculate the percentile of any value relative to its peers without needing to know the exact distribution of the data beforehand.
Practical Application
Imagine you have a sales table, and you want to categorize sales orders into tiers based on their amount. We can use the PERCENT_RANK() or CUME_DIST() window function to calculate where each order sits in the hierarchy.
SELECT
order_id,
amount,
CASE
WHEN PERCENT_RANK() OVER (ORDER BY amount) >= 0.90 THEN 'Top 10%'
WHEN PERCENT_RANK() OVER (ORDER BY amount) >= 0.50 THEN 'Median & Above'
ELSE 'Lower Half'
END AS sales_tier
FROM sales;
Why Use This?
- Dynamic Scaling: If your business grows, your "top 10%" threshold automatically adjusts. You don't have to manually update your queries as order volumes increase.
- Relative Context: It helps you understand performance in context. Being in the "top 10%" of sales in a quiet month carries the same strategic weight as being in the "top 10%" during a peak season, even if the actual dollar amounts differ significantly.
- Outlier Identification: Percentiles are excellent for isolating the extremes (the bottom 1% or top 1%) regardless of the actual values, which is useful for cleaning data or identifying anomalies.
Key Takeaway: Percentile-based thresholding allows you to classify data points by their relative rank within a group, making your reporting logic adaptive and resilient to changing data scales.