SQL2005新功能:[2]排名函式?

Tags: 功能, 函式,

SQL2005資料庫引擎引入了稱為排名函式的一類新函式。構成該類的函式有:

●RANK

●DENSE_RANK

●NTILE

●ROW_NUMBER

這些函式返回分割槽中每行的排名值。

工具/原料

SQL2005,或更高版本(這裡使用SQL2012)

ROW_NUMBER()

這個比較有用,類似獲得一個自增長列

返回結果集分割槽內行的序列號,每個分割槽的第一行從 1 開始。

SQL2005新功能:[2]排名函式

rounumber1按考試型別排序,為每條資料添加了序列號。

rownumber2按考試型別分割槽(使用 PARTITION BY 引數),然後按姓名排序新增序列號,分割槽內的序列號是相互獨立的。

SQL2005新功能:[2]排名函式

RANK()

返回結果集的分割槽內每行的排名。行的排名是相關行之前的排名數加一。

意味著這有並列排名。

SQL2005新功能:[2]排名函式

下面資料中存在並列名次3,就直接跳過4了。

SQL2005新功能:[2]排名函式

SQL2005新功能:[2]排名函式

DENSE_RANK

返回結果集分割槽中行的排名,在排名中沒有任何間斷。行的排名等於所討論行之前的所有排名數加一。

可以理解為與RANK函式類似,但是但相同排名後的序號是連貫的。所謂的密集系列。

SQL2005新功能:[2]排名函式

DENSE_RANK()與RANK()的區別在於排名的連續性。

DENSE_RANK的排名始終是連貫的;RANK的排名出現重複排名後就不連貫了。

SQL2005新功能:[2]排名函式

NTILE

將有序分割槽中的行分發到指定數目的組中。各個組有編號,編號從一開始。對於每一個行,NTILE 將返回此行所屬的組的編號。

可以簡單的理解為這個函式是用來為資料分組的。

SQL2005新功能:[2]排名函式

分組規則

總行數/組數,如果除不盡,將多餘的資料根據排序分配到前面的幾個組中。

示例如下:

SQL2005新功能:[2]排名函式

感謝閱讀

感謝你把本經驗閱讀完,如果有寫的不好的地方,請指出以便糾正,以免誤人子弟。

如果覺得本經驗有用,浪費你幾秒鐘的時間在頁面左下方點個贊。在頁面頂部/經驗底部投個票。

SQL2005新功能:[2]排名函式

SQL2005新功能:[2]排名函式

SQL2005新功能:[2]排名函式

功能, 函式,
相關問題答案