Syntax
PERCENT_RANK( ) OVER ([ query_partition_clause ] order_by_clause)
Purpose
You can call this function to calculate and return the percent rank of each data row in the column that is specified in order_by_clause.
Examples
obclient> CREATE TABLE EXPLOYEES(LAST_NAME CHAR(10), SALARY DECIMAL, JOB_ID CHAR(32));
obclient> INSERT INTO EXPLOYEES VALUES('JIM', 2000, 'CLEANER');
obclient> INSERT INTO EXPLOYEES VALUES('MIKE', 12000, 'ENGINEERING');
obclient> INSERT INTO EXPLOYEES VALUES('LILY', 13000, 'ENGINEERING');
obclient> INSERT INTO EXPLOYEES VALUES('IRIS', 11000, 'ENGINEERING');
obclient> INSERT INTO EXPLOYEES VALUES('TOM', 11000, 'ENGINEERING');
obclient> SELECT LAST_NAME, RANK() OVER(PARTITION BY JOB_ID ORDER BY SALARY) RANK, DENSE_RANK() OVER(PARTITION BY JOB_ID ORDER BY SALARY) DENSE_RANK, PERCENT_RANK() OVER(PARTITION BY JOB_ID ORDER BY SALARY) PERCENT_RANK FROM EXPLOYEES;
+-----------+------+------------+----------------------------------+
LAST_NAME RANK DENSE_RANK PERCENT_RANK
+-----------+------+------------+----------------------------------+
JIM 1 1 0.000000000000000000000000000000
TOM 1 1 0.000000000000000000000000000000
IRIS 1 1 0.000000000000000000000000000000
MIKE 3 2 0.666666666666666666666666666667
LILY 4 3 1.000000000000000000000000000000
+-----------+------+------------+----------------------------------+
5 rows in set (0.01 sec)