開窗函數與聚合函數一樣,都是對行的集合組進行聚合計算。它用於為行定義一個視窗(這裡的視窗是指運算將要操作的行的集合),它對一組值進行操作,不需要使用GROUP BY子句對數據進行分組,能夠在同一行中同時返回基礎行的列和聚合列。開窗函數的調用格式為:函數名(列) OVER(選項)。第一大類:聚合開窗函...
開窗函數與聚合函數一樣,都是對行的集合組進行聚合計算。它用於為行定義一個視窗(這裡的視窗是指運算將要操作的行的集合),它對一組值進行操作,不需要使用GROUP BY子句對數據進行分組,能夠在同一行中同時返回基礎行的列和聚合列。
開窗函數的調用格式為:函數名(列) OVER(選項)。
第一大類:聚合開窗函數====》聚合函數(列) OVER (選項),這裡的選項可以是PARTITION BY子句,表示根據PARTITION BY後面的欄位分組。
第二大類:排序開窗函數====》排序函數(列) OVER (選項),這裡的選項可以是ORDER BY子句,也可以是PARTITION BY子句+ORDER BY子句,但不可以只是PARTITION BY子句。
例1:
1 -- 通過id_parent排序後並得到一個序號列 2 select row_number() over(order by id_parent) as rownumber,* from COM_datadictionaryInfo where id_parent is not null
例2:
1 -- 通過id_parent分組後並得到每組的記錄數 2 select count(*) over(partition by id_parent) as rownumber,* from COM_datadictionaryInfo where id_parent is not null
例3:
1 -- 通過id_parent分組、level排序後得到每組的序列號 2 select row_number() over(partition by id_parent order by level) as rownumber,* from COM_datadictionaryInfo where id_parent is not null