窗口函数

适用于:检查标记是的砖的SQL检查标记是的砖运行时

功能操作的一组行,称为一个窗口,计算每一行返回值基于组的行。窗口函数是用于加工任务,如移动平均计算,计算累计统计,或访问的行值的相对位置当前行。

语法

函数{window_name|(window_name)|window_spec}函数{ranking_function|analytic_function|aggregate_function}over_clause{window_name|(window_name)|window_spec}window_spec((分区通过分区(,]](order_by](window_frame])

参数

  • 函数

    功能操作窗口。不同类型的函数支持不同规格的配置窗口。

  • window_name

    标识一个指定窗口规范定义的查询

  • window_spec

    这一条款定义行如何分组,组内排序,在分区函数作用于行。

    • 分区

      一个或多个表达式用于指定的一组行定义了函数的操作范围。如果没有指定分区条款分区由所有行。

    • order_by

      ORDER BY子句指定的顺序排在一个分区。

    • window_frame

      窗框条款指定一个滑动的行子集内的分区聚合或分析功能操作。

您可以指定排序作为命令的别名。

您还可以指定分发由作为分区的别名。您可以使用集群由作为分区的别名在缺乏秩序。

例子

>创建员工(的名字字符串,部门字符串,工资INT,年龄INT);>插入员工(“丽莎”,“销售”,10000年,35),(“伊万”,“销售”,32000年,38),(“弗雷德”,“工程”,21000年,28),(“亚历克斯”,“销售”,30000年,33),(“汤姆”,“工程”,23000年,33),(“简”,“市场营销”,29000年,28),(“杰夫”,“市场营销”,35000年,38),(“保罗”,“工程”,29000年,23),(克洛伊的,“工程”,23000年,25);>选择的名字,部门,工资,年龄员工;克洛伊工程23000年25弗雷德工程21000年28保罗工程29000年23海伦市场营销29000年40汤姆工程23000年33市场营销29000年28杰夫市场营销35000年38埃文销售32000年38丽莎销售10000年35亚历克斯销售30000年33>选择的名字,部门,排名()(分区通过部门订单通过工资)作为排名员工;丽莎销售10000年1亚历克斯销售30000年2埃文销售32000年3弗雷德工程21000年1汤姆工程23000年2克洛伊工程23000年2保罗工程29000年4海伦市场营销29000年1市场营销29000年1杰夫市场营销35000年3>选择的名字,部门,DENSE_RANK()(分区通过部门订单通过工资之间的无限当前的)作为dense_rank员工;丽莎销售10000年1亚历克斯销售30000年2埃文销售32000年3弗雷德工程21000年1汤姆工程23000年2克洛伊工程23000年2保罗工程29000年3海伦市场营销29000年1市场营销29000年1杰夫市场营销35000年2>选择的名字,部门,年龄,CUME_DIST()(分区通过部门订单通过年龄范围之间的无限当前的)作为cume_dist员工;亚历克斯销售3303333333333333333丽莎销售3506666666666666666埃文销售3810保罗工程23025克洛伊工程25075年弗雷德工程28025汤姆工程3310市场营销2803333333333333333杰夫市场营销3806666666666666666海伦市场营销4010>选择的名字,部门,工资,最小值(工资)(分区通过部门订单通过工资)作为最小值员工;丽莎销售10000年10000年亚历克斯销售30000年10000年埃文销售32000年10000年海伦市场营销29000年29000年市场营销29000年29000年杰夫市场营销35000年29000年弗雷德工程21000年21000年汤姆工程23000年21000年克洛伊工程23000年21000年保罗工程29000年21000年>选择的名字,工资,滞后(工资)(分区通过部门订单通过工资)作为滞后,(工资,1,0)(分区通过部门订单通过工资)作为员工;丽莎销售10000年30000年亚历克斯销售30000年10000年32000年埃文销售32000年30000年0弗雷德工程21000年23000年克洛伊工程23000年21000年23000年汤姆工程23000年23000年29000年保罗工程29000年23000年0海伦市场营销29000年29000年市场营销29000年29000年35000年杰夫市场营销35000年29000年0