Field note · May 16, 2025

unit_price_usd: mean 72.66, median 48.86

A 48.7% gap between mean and median on one column, and which of the two answers the question you were asked.

1 min read ·Statistics ·statistics practice

A number worth keeping: on retail-orders, unit_price_usd has a mean of 72.66 and a median of 48.86.

The mean is 72.66. The median is 48.86. That is a gap of 48.7%, and it is not noise — the p90 is 169.87 and the max is 589.71, so the top of the distribution is dragging the average somewhere a minority of rows actually live.

sql
select
  avg(unit_price_usd)                                                     as mean,
  percentile_cont(0.5) within group (order by unit_price_usd)             as median,
  percentile_cont(0.9) within group (order by unit_price_usd)             as p90,
  max(unit_price_usd)                                                     as max
from retail_orders;

The practical consequence is that "average unit price usd" answers a question nobody asked. If someone wants to know what a typical row looks like, the median answers it. If someone is forecasting a total, the mean is the right tool and the skew does not matter, because the mean times the count is the total.

So the rule is not "never use the mean". It is: name which question you are answering, then pick the statistic that answers it. A report that shows 72.66 with no median next to it has quietly decided you meant the first question.

There is a longer version of this in Describing a column without lying, and the pattern is the short one.