﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
34325	Clarify PercentRank() description.	dennisvang	dennisvang	"The [https://docs.djangoproject.com/en/4.1/ref/models/database-functions/#percentrank documentation for the PercentRank window function] says:

  Computes the '''''percentile rank''''' of the rows in the frame clause. This computation is equivalent to evaluating:
  {{{
  (rank - 1) / (total rows - 1)
  }}}

(my emphasis)

However, I'm not so sure ""[https://en.wikipedia.org/w/index.php?title=Percentile&oldid=1114275310 percentile] rank"" is the correct term. 

If you look up the (statistical) term ""percentile rank"" online, you'll find various definitions, [https://en.wikipedia.org/w/index.php?title=Percentile_rank&oldid=1136815121 ranging from]

{{{
(CF - 0.5 * F) / N
}}}

  where CF—the cumulative frequency—is the count of all scores less than or equal to the score of interest, F is the frequency for the score of interest, and N is the number of scores in the distribution.

[https://www.geo.fu-berlin.de/en/v/soga/Basics-of-statistics/Descriptive-Statistics/Measures-of-Position/Percentiles-and-Percentile-Rank/index.html to something like]

{{{
<number of values less than the score of interest> / <total number of values in the data set>
}}}

(equivalent to `(CF - F) / N`)

Both definitions are also used e.g. by [https://github.com/scipy/scipy/blob/dde50595862a4f9cede24b5d1c86935c30f1f88a/scipy/stats/_stats_py.py#L2190 scipy].

The latter definition is similar to that in the Django docs, but still subtly different in the denominator.

Note also that the documentation for the `percent_rank` function in the [https://www.sqlite.org/windowfunctions.html#built_in_window_functions SQLite] and [https://www.postgresql.org/docs/15/functions-window.html PostgreSQL] database backends does '''not''' mention ""percentile rank"" at all. Instead, they use the term '''""relative rank.""''' 

To prevent confusion, wouldn't it be better to use the same terminology as the database backends?
"	Cleanup/optimization	closed	Documentation	4.1	Normal	fixed			Ready for checkin	1	0	0	0	0	0
