

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# PERCENT\$1RANK 开窗函数
PERCENT\$1RANK

计算给定行的百分比排名。使用以下公式确定百分比排名：

`(x - 1) / (the number of rows in the window or partition - 1)`

其中，*x* 为当前行的排名。以下数据集说明了此公式的使用：

```
Row#	Value	Rank	Calculation	PERCENT_RANK
1	15	1	(1-1)/(7-1)	0.0000
2	20	2	(2-1)/(7-1)	0.1666
3	20	2	(2-1)/(7-1)	0.1666
4	20	2	(2-1)/(7-1)	0.1666
5	30	5	(5-1)/(7-1)	0.6666
6	30	5	(5-1)/(7-1)	0.6666
7	40	7	(7-1)/(7-1)	1.0000
```

返回值范围介于 0 和 1（含 1）之间。任何集合中的第一行的 PERCENT\$1RANK 均为 0。

## 语法
语法

```
PERCENT_RANK ()
OVER ( 
[ PARTITION BY partition_expression ] 
[ ORDER BY order_list ]
)
```

## 参数
参数

( )   
该函数没有参数，但需要空括号。

OVER  
一个指定窗口分区的子句。OVER 子句不能包含窗口框架规范。

PARTITION BY *partition\$1expression*   
可选。一个设置 OVER 子句中每个组的记录范围的表达式。

ORDER BY *order\$1list*   
可选。用于计算百分比排名的表达式。该表达式必须具有数字数据类型或可隐式转换为 1。如果省略 ORDER BY，则所有行的返回值为 0。  
如果 ORDER BY 未生成唯一顺序，则行的顺序是不确定的。有关更多信息，请参阅 [窗口函数的唯一数据排序](c_Window_functions.md#r_Examples_order_by_WF)。

## 返回类型
返回类型

FLOAT8

## 示例
示例

以下示例计算每个卖家的销售数量的百分比排名：

```
select sellerid, qty, percent_rank() 
over (partition by sellerid order by qty) 
from winsales;

sellerid	qty		percent_rank
----------------------------------------
1		10.00		0.0
1		10.64		0.5
1		30.37		1.0
3		10.04		0.0
3		15.15		0.33
3		20.75		0.67
3		30.55		1.0
2		20.09		0.0
2		20.12		1.0
4		10.12		0.0
4		40.23		1.0
```

有关 WINSALES 表的说明，请参阅[窗口函数示例的示例表](c_Window_functions.md#r_Window_function_example)。