SQL PERCENTILE_CONT
The interpolated percentile — when the exact percentile falls between two values, it computes a point in between.
What & Why
PERCENTILE_CONT(p) treats the data as continuous — if the target percentile lands between two actual values, it returns a weighted point between them, not necessarily a value that exists in the data.
See How It Works
BUSINESS QUESTION
Calculate continuous median and 90th-percentile campaign spend by channel.
| id | name | channel | spend | start_date | end_date | status | target_segment |
|---|---|---|---|---|---|---|---|
| 1 | Spring Launch | google_ads | 55000.00 | 2024-01-15 | 2024-03-31 | active | smb |
| 2 | Retention Webinar | 45000.00 | 2024-02-10 | 2024-04-15 | active | enterprise | |
| 3 | Finance Retargeting | 50000.00 | 2024-03-12 | 2024-05-31 | active | enterprise | |
| 4 | Enterprise Search | google_ads | 60000.00 | 2024-04-01 | 2024-06-30 | active | enterprise |
EXAMPLE QUERY
SELECT
channel,
ROUND(PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY spend)::numeric, 2) AS median_spend,
ROUND(PERCENTILE_CONT(0.9) WITHIN GROUP (ORDER BY spend)::numeric, 2) AS p90_spend
FROM marketing.campaigns
GROUP BY channel
ORDER BY channel;RESULT — continuous campaign percentiles
| channel | median_spend | p90_spend |
|---|---|---|
| 45000.00 | 45000.00 | |
| google_ads | 57500.00 | 59500.00 |
| 50000.00 | 50000.00 |
Continuous percentiles interpolate within the two-row google_ads distribution.
This lesson's practice is part of Pro.
Sign up free to try it on a real business scenario