[discrete] [[esql-agg-percentile]] === `PERCENTILE` *Syntax* [source,esql] ---- PERCENTILE(expression, percentile) ---- *Parameters* `expression`:: Expression from which to return a percentile. `percentile`:: A constant numeric expression. *Description* Returns the value at which a certain percentage of observed values occur. For example, the 95th percentile is the value which is greater than 95% of the observed values and the 50th percentile is the <>. *Example* [source.merge.styled,esql] ---- include::{esql-specs}/stats_percentile.csv-spec[tag=percentile] ---- [%header.monospaced.styled,format=dsv,separator=|] |=== include::{esql-specs}/stats_percentile.csv-spec[tag=percentile-result] |=== The expression can use inline functions. For example, to calculate a percentile of the maximum values of a multivalued column, first use `MV_MAX` to get the maximum value per row, and use the result with the `PERCENTILE` function: [source.merge.styled,esql] ---- include::{esql-specs}/stats_percentile.csv-spec[tag=docsStatsPercentileNestedExpression] ---- [%header.monospaced.styled,format=dsv,separator=|] |=== include::{esql-specs}/stats_percentile.csv-spec[tag=docsStatsPercentileNestedExpression-result] |=== [discrete] [[esql-agg-percentile-approximate]] ==== `PERCENTILE` is (usually) approximate include::../../aggregations/metrics/percentile-aggregation.asciidoc[tag=approximate] [WARNING] ==== `PERCENTILE` is also {wikipedia}/Nondeterministic_algorithm[non-deterministic]. This means you can get slightly different results using the same data. ====