窗口函數

適用於:檢查標記是的磚的SQL檢查標記是的磚運行時

功能操作的一組行,稱為一個窗口,計算每一行返回值基於組的行。窗口函數是用於加工任務,如移動平均計算,計算累計統計,或訪問的行值的相對位置當前行。

語法

函數{window_name|(window_name)|window_spec}函數:{ranking_function|analytic_function|aggregate_function}window_spec:((分區通過分區(,]](order_by](window_frame])

參數

  • 函數

    功能操作窗口。不同類型的函數支持不同規格的配置窗口。

  • 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