sql 四大排名函式

2021-10-03 19:41:17 字數 1775 閱讀 5962

1.row_number()

定義:row_number()函式作用就是將select查詢到的資料進行排序,每一條資料加乙個序號,他不能用做於學生成績的排名,一般多用於分頁查詢, 

比如查詢前10個 查詢10-100個學生。

例項

1.1對學生成績排序

這裡number就是每個學生的序號 根據studentscore(分數)進行desc倒序

1.2獲取第二個同學的成績資訊

這裡用到的思想就是 分頁查詢的思想 在原sql外再套一層select 

where t.number>=1 and t.number<=10 是不是就是獲取前十個學生的成績資訊納。

2.rank()

定義:rank()函式,顧名思義排名函式,可以對某乙個字段進行排名,這裡為什麼和row_number()不一樣那,row_number()是排序,當存在相同成績的學生時,row_number()會依次進行排序,他們序號不相同,而rank()則不一樣出現相同的,他們的排名是一樣的。下面看例子:

2.1對學生成績進行排名

這裡發現 row_number()和rank()怎麼一樣?因為學生成績都不一樣所以排名和排序一樣,下面改一下就會發現區別。

當出現兩個學生成績相同是裡面出現變化。rank()是 1 2 2,而row_number()則還是1 2 3,這就是rank()和row_number()的區別了

3.dense_rank()

定義:dense_rank()函式也是排名函式,和rank()功能相似,也是對字段進行排名,那它和rank()到底有什麼不同那?看例子:

例項

dense_rank()密集的排名他和rank()區別在於,排名的連續性,dense_rank()排名是連續的,rank()是跳躍的排名,所以一般情況下用的排名函式就是rank()。

4.ntile()

定義:ntile()函式是將有序分割槽中的行分發到指定數目的組中,各個組有編號,編號從1開始,就像我們說的』分割槽』一樣 ,分為幾個區,乙個區會有多少個。

例項: 

這裡查詢了3次,第一次分為1個』區』 ,所以查詢結果number全是1,第二次分為2個區,查詢結果為 1 1 2,意思就是 第乙個 『區』 為 1 1 兩個編號的資料 ,第二個』區』只有2這個資料。

1.row_number()

SQL四大排序函式

sql四大排序函式 1 row number 函式作用就是將select查詢到的資料進行排序,每一條資料加乙個序號 select row number over order by score desc as rank from scores select from select row number...

四大排序函式

row number over partition by clause order by filed asc desc 連續的從1開始到n的排序號 sql view plain copy rank over partition by clause order by filed asc desc 不連...

javascript常見四大排序

氣泡排序 var arr 23,34,11,22,19,18 氣泡排序的思路分析 第1輪 第1步 23,34,11,22,19,18 第1輪 第2步 23,11,34,22,19,18 第1輪 第3步 23,11,22,34,19,18 第1輪 第4步 23,11,22,19,34,18 第1輪 第...