NTH_VALUE 窗口函数 - Amazon Redshift

NTH_VALUE 窗口函数

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

语法

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

参数

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 关键字和关联的说明符。请参阅 窗口函数语法摘要

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

示例

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

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)