窗口函數
適用於:磚的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