窗口函数
适用于:砖的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])
参数
函数
功能操作窗口。不同类型的函数支持不同规格的配置窗口。
ranking_function
的任何排名窗口功能。
如果指定了window_spec必须包括一个ORDER BY子句,但不是window_frame条款。
analytic_function
的任何分析窗函数。
aggregate_function
的任何聚合函数。
如果指定了函数必须不包含筛选器子句。
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从员工;亚历克斯销售330。3333333333333333丽莎销售350。6666666666666666埃文销售381。0保罗工程230。25克洛伊工程250。75年弗雷德工程280。25汤姆工程331。0简市场营销280。3333333333333333杰夫市场营销380。6666666666666666海伦市场营销401。0>选择的名字,部门,工资,最小值(工资)在(分区通过部门订单通过工资)作为最小值从员工;丽莎销售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