

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

# NTH\_VALUE 窗口函数
<a name="r_WF_NTH"></a>

 NTH\_VALUE 窗口函数返回相对于窗口的第一行的窗口框架的指定行的表达式值。

## 语法
<a name="r_WF_NTH-synopsis"></a>

```
NTH_VALUE (expr, offset)
[ IGNORE NULLS | RESPECT NULLS ]
OVER
( [ PARTITION BY window_partition ]
[ ORDER BY window_ordering 
                        frame_clause ] )
```

## 参数
<a name="r_WF_NTH-arguments"></a>

 *expr*   
 对其执行函数的目标列或表达式。

 *offset*   
 确定相对于要为其返回表达式的窗口中的第一行的行号。*offset* 可以是常数或表达式，且必须为大于 0 的正整数。

IGNORE NULLS   
一个可选规范，该规范指示 Amazon Redshift 应跳过 null 值以确定要使用的行。如果未列出 IGNORE NULLS，则包含 Null 值。

RESPECT NULLS   
 指示 Amazon Redshift 应包含 null 值以确定要使用的行。如果您未指定 IGNORE NULLS，则默认情况下不支持 RESPECT NULLS。

OVER   
指定窗口分区、排序和窗口框架。

PARTITION BY *window\_partition*   
设置 OVER 子句中每个组的记录范围。

ORDER BY *window\_ordering*   
对每个分区中的行进行排序。如果忽略 ORDER BY，则默认框架将包含分区中的所有行。

 *frame\_clause*   
如果 ORDER BY 子句用于聚合函数，则需要显式框架子句。框架子句优化函数窗口中的行集，包含或排除已排序结果中的行集。框架子句包括 ROWS 关键字和关联的说明符。请参阅 [窗口函数语法摘要](c_Window_functions.md#r_Window_function_synopsis)。

NTH\_VALUE 窗口函数支持使用任何 Amazon Redshift 数据类型的表达式。返回类型与 *expr* 的类型相同。

## 示例
<a name="r_WF_NTH-examples"></a>

以下示例显示了加利福利亚、佛罗里达和纽约的第三大场地的座位数与这些州的其他场地的座位数的比较情况：

```
select venuestate, venuename, venueseats,
nth_value(venueseats, 3)
ignore nulls
over(partition by venuestate order by venueseats desc
rows between unbounded preceding and unbounded following)
as third_most_seats
from (select * from venue where venueseats > 0 and
venuestate in('CA', 'FL', 'NY'))
order by venuestate;

venuestate |           venuename            | venueseats | third_most_seats
------------+--------------------------------+------------+------------------
CA         | Qualcomm Stadium               |      70561 |            63026
CA         | Monster Park                   |      69843 |            63026
CA         | McAfee Coliseum                |      63026 |            63026
CA         | Dodger Stadium                 |      56000 |            63026
CA         | Angel Stadium of Anaheim       |      45050 |            63026
CA         | PETCO Park                     |      42445 |            63026
CA         | AT&T Park                      |      41503 |            63026
CA         | Shoreline Amphitheatre         |      22000 |            63026
FL         | Dolphin Stadium                |      74916 |            65647
FL         | Jacksonville Municipal Stadium |      73800 |            65647
FL         | Raymond James Stadium          |      65647 |            65647
FL         | Tropicana Field                |      36048 |            65647
NY         | Ralph Wilson Stadium           |      73967 |            20000
NY         | Yankee Stadium                 |      52325 |            20000
NY         | Madison Square Garden          |      20000 |            20000
(15 rows)
```