Syntax
PERCENT_RANK( ) OVER ([ query_partition_clause ] order_by_clause)
Purpose
PERCENT_RANK() calculates and returns the percent rank of each data row in the column that is specified in order_by_clause.
Examples
obclient> CREATE TABLE employees(last_name CHAR(10), salary DECIMAL, job_id CHAR(32));
obclient> INSERT INTO employees VALUES('JIM', 2000, 'CLEANER');
obclient> INSERT INTO employees VALUES('MIKE', 12000, 'ENGINEERING');
obclient> INSERT INTO employees VALUES('LILY', 13000, 'ENGINEERING');
obclient> INSERT INTO employees VALUES('IRIS', 11000, 'ENGINEERING');
obclient> INSERT INTO employees 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 employees;
+-----------+------+------------+----------------------------------+
| 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