rank 開窗函式 排序類開窗函式

2021-10-13 01:21:06 字數 1038 閱讀 2104

1,row_number() over()【排序,連續】

select score, row_number ( ) over () from sc;

按原始**的成績順序進行排序

原始**成績順序

先將分數從大到小排序,分數相同,排名不同

select score, row_number ( ) over (order by score) from sc;

按學科分組後對成績排序

select score,cid,row_number ( ) over (partition by cid order by score) from sc;

2,rank() over()【排序,不連續】

select score,rank() over(order by score desc) from sc;

相同成績,相同序號,後面的名次不連續

select score,cid,rank( ) over (partition by cid order by score) from sc;

按對相應學科成績進行排序,相同成績,相同序號,不連續

3,dense_rank() over()【排序,連續】

select score,dense_rank() over(order by score desc) from sc;

成績降序排列,成績相同,名次相同,連續

select score,cid,dense_rank( ) over (partition by cid order by score) from sc;

學科按名次排序,成績相同,名次相同,連續

4,ntile(n) over()【平分】

select score,ntile(3) over(order by score ) from sc;

成績公升序排列後,平均分為3組,輸出他們組別的序號

select score,cid,ntile(3) over (partition by cid order by score) from sc;

按學科公升序排列後,將每個學課的成績,平分為3組

Hive開窗函式和Rank函式

over 跟在聚合函式後面,指定分析函式工作的資料視窗大小,決定了資料的聚合範圍,預設範圍是整個資料視窗,即所有行。可使用partition by將資料進行分組聚合 使用order by除了排序 預設asc公升序 還會改變聚合範圍 從開始行到當前行的聚合 使用distribute by sort b...

oracle開窗函式

1.使用row number分頁,查詢第1 10條資料 select t.custid,t.companyname,t.address,t.city from select row number over order by custid as rownum,custid,companyname,ad...

開窗函式簡介

比如我們想查詢每個工資小於5000元的員工資訊 城市以及年齡 並且在每行中都顯示所有工資小於5000元的員工個數,執行下面的sql語句 這個語句顯然是錯誤的,因為count 是聚合函式,然後fname和fage欄位沒有包含分組裡面。那麼,這樣寫呢?sql view plain copy select...