作用
對結果集的輸出進行編號。 具體來說,返回結果集分區內行的序列號,每個分區的第一行從 1 開始。
備注
ROW_NUMBER 是運行查詢時計算出的臨時值
語法
ROW_NUMBER ( )
OVER ( [ PARTITION BY value_expression , ... [ n ] ] order_by_clause )
一般寫為
ROW_NUMBER ( )
OVER ( PARTITION BY 表達式 order by 字段 )
可單個,也可以有多個表達式及字段
參數
PARTITION BY value_expression
將 FROM 子句生成的結果集划分為應用 ROW_NUMBER 函數的分區。 value_expression 指定對結果集進行分區所依據的列 。 如果未指定 PARTITION BY,則此函數將查詢結果集的所有行視為單個組
order_by_clause
ORDER BY 子句可確定在特定分區中為行分配唯一 ROW_NUMBER 的順序。 它是必需的
參數解釋
PARTITION BY:
和group by 作用類似,但是細節不同
區別如下:
partition by關鍵字是分析性函數的一部分,它和聚合函數(如group by)不同的地方在於它能返回一個分組中的多條記錄,而聚合函數一般只有一條反映統計值的記錄,
partition by用於給結果集分組,如果沒有指定那么它把整個結果集作為一個分組。
partition by 與group by不同之處在於前者返回的是分組里的每一條數據,並且可以對分組數據進行排序操作。后者只能返回聚合之后的組的數據統計值的記錄。
轉載於原博客
group by是分組意思(在group by沒有出現的字段,必須是聚合函數,例如:avg,sum等)
例如:
group by id根據id分組
group by id,name 根據id分組之后,再根據name分組
order by:這里就不解釋了,排序的意思,不清楚的可以查閱一些資料