Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

开窗函数

使用开窗函数,应用程序开发人员能够更高效地创建分析业务查询。开窗函数运行于分区或结果集的“窗口”上,并为该窗口中的每个行返回一个值。相比之下,非开窗函数执行与结果集中的每个行相关的计算。与聚合结果行的分组函数不同,表的表达式中的所有行都将保留。

利用该窗口中的行集中的值计算返回的值。该窗口(适用于表中的每个行)定义一组用于计算其他属性的行。窗口使用窗口规范(OVER 子句)进行定义并基于以下三个主要概念:

  • 窗口分区,构成了行组(PARTITION 子句)

  • 窗口排序,定义了每个分区中行的顺序或序列(ORDER BY 子句)

  • 窗口框架,相对于每个行进行定义以进一步限制行集(ROWS 规范)

开窗函数是在查询中执行的最后一组操作(最后的 ORDER BY 子句除外)。所有联接和所有 WHERE、GROUP BY 和 HAVING 子句均在处理开窗函数前完成。因此,开窗函数只能显示在选择列表或 ORDER BY 子句中。可在一个具有不同框架子句的查询中使用多个开窗函数。开窗函数可位于其他标量表达式(如 CASE)中。

Amazon Redshift 支持以下两种类型的开窗函数:聚合和排名。

以下是受支持的聚合函数:

  • AVG

  • COUNT

  • CUME_DIST

  • FIRST_VALUE

  • LAG

  • LAST_VALUE

  • LEAD

  • MAX

  • MEDIAN

  • MIN

  • NTH_VALUE

  • PERCENTILE_CONT

  • PERCENTILE_DISC

  • RATIO_TO_REPORT

  • STDDEV_POP

  • STDDEV_SAMP(STDDEV 的同义词)

  • SUM

  • VAR_POP

  • VAR_SAMP(VARIANCE 的同义词)

以下是受支持的排名函数:

  • DENSE_RANK

  • NTILE

  • PERCENT_RANK

  • RANK

  • ROW_NUMBER