窗口排序

窗口排序指定如何对提供给分析函数的行进行排序。如下所示,您可以通过函数的 OVER 子句中的 ORDER BY 子句指定窗口排序。如果 OVER 子句包含窗口分区子句,则在每个分区中对行进行排序。如果没有显式指定任何窗口框架,窗口顺序子句还会创建默认窗口框架。

窗口顺序子句仅在窗口结果集中指定顺序。除 OVER 子句以外,查询可以拥有自己的 ORDER BY 子句。它优先于窗口顺序子句,并对最终结果集进行排序。

指定窗口顺序

您可以在分析函数的 OVER 子句中指定窗口框架,如下所示。

ORDER BY { expression [ ASC | DESC [ NULLS { FIRST | LAST | AUTO } ] ]
  }[,...]

有关语法的详细信息,请参阅窗口顺序子句

分析函数用法

分析聚合函数(例如 SUM)支持窗口顺序子句。

必需用法
以下函数需要窗口顺序子句:

无效用法
窗口顺序子句不可与以下函数结合使用:

示例

以下示例使用 allsales 表架构:

CREATE TABLE allsales(state VARCHAR(20), name VARCHAR(20), sales INT);
INSERT INTO allsales VALUES('MA', 'A', 60);
INSERT INTO allsales VALUES('NY', 'B', 20);
INSERT INTO allsales VALUES('NY', 'C', 15);
INSERT INTO allsales VALUES('MA', 'D', 20);
INSERT INTO allsales VALUES('MA', 'E', 50);
INSERT INTO allsales VALUES('NY', 'F', 40);
INSERT INTO allsales VALUES('MA', 'G', 10);
COMMIT;