窗口函数
主题
- 窗口函数语法摘要
- AVG 窗口函数
- COUNT 窗口函数
- CUME_DIST 窗口函数
- DENSE_RANK 窗口函数
- FIRST_VALUE 和 LAST_VALUE 窗口函数
- LAG 窗口函数
- LEAD 窗口函数
- LISTAGG 窗口函数
- MAX 窗口函数
- MEDIAN 窗口函数
- MIN 窗口函数
- NTH_VALUE 窗口函数
- NTILE 窗口函数
- PERCENT_RANK 窗口函数
- PERCENTILE_CONT 窗口函数
- PERCENTILE_DISC 窗口函数
- RANK 窗口函数
- RATIO_TO_REPORT 窗口函数
- ROW_NUMBER 窗口函数
- STDDEV_SAMP 和 STDDEV_POP 窗口函数
- SUM 窗口函数
- VAR_SAMP 和 VAR_POP 窗口函数
- 窗口函数示例
使用窗口函数,应用程序开发人员能够更高效地创建分析业务查询。窗口函数运行于分区或结果集的“窗口”上,并为该窗口中的每个行返回一个值。相比之下,非窗口函数执行与结果集中的每个行相关的计算。与聚合结果行的分组函数不同,表的表达式中的所有行都将保留。
利用该窗口中的行集中的值计算返回的值。该窗口(适用于表中的每个行)定义一组用于计算其他属性的行。窗口使用窗口规范(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