Link Search Menu Expand Document


Calculates the relative rank of the current row within an ordered data set, as ( rank - 1 ) / ( rows - 1 ) where rank is the current row’s rank within the partition, and rows is the number of rows in the partition. PERCENT_RANK always returns values from 0 to 1 inclusive. The first row in any set has a PERCENT_RANK of 0.

See also CUME_DIST, which returns the cumulative distribution of the current row in relation to other rows in the same partition within an ordered data set. For more information on usage, please refer to Window Functions.


PERCENT_RANK() OVER ( [ PARTITION BY <partition_by> ] ORDER BY <order_by> [ASC|DESC] )


Parameter Description Supported input types
Parameter Description  
<value> An integer expression used for the NTILE() function to specify the number of buckets for division. INTEGER
<partition_by> An expression used for the partition by clause. Any
<order_by> An expression used for the order by clause. Any

Return Type


This function respects NULL values, and results will be ordered with default null ordering NULLS LAST unless otherwise specified in the ORDER BY clause.


The example below calculates, for each student in grade nine, the percent rank of the student’s test score by their grade level.

	nickname, current_score,
	PERCENT_RANK() OVER (PARTITION BY level ORDER BY current_score DESC) as percent_rank
WHERE grade_level=9;



nickname current_score percent_rank
kennethpark 90 0
sabrina21 85 0.2
rileyjon 80 0.4
ymatthews 79 0.6