窗口排序
窗口排序指定如何对提供给分析函数的行进行排序。如下所示,您可以通过函数的 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;