Spark開窗函式之ROW NUMBER

2021-12-30 12:46:14 字數 1151 閱讀 4201

一、row_number函式的用法:

(1)spark 1.5.x版本以後,在spark sql和dataframe中引入了開窗函式,其中比較常用的開窗函式就是row_number

該函式的作用是根據表中字段進行分組,然後根據表中的字段排序;其實就是根據其排序順序,給組中的每條記錄添

加乙個序號;且每組的序號都是從1開始,可利用它的這個特性進行分組取top-n。

(2)如果sql語句裡面使用到了開窗函式,那麼這個sql語句必須使用hivecontext來執行,hivecontext預設情況下在

本地無法建立。

(3)row_number的格式:

row_number() over (partition by '***' order by '***' desc) rank二、利用row_number實現分組取top3

* 實驗資料

* user表中:

* id age deptid

* 001 21 d1

* 002 23 d2

* 003 31 d1

* 004 27 d2

* 005 28 d1

* 006 25 d2

* 007 41 d1

* 008 33 d2

* 009 36 d1

* 010 42 d2

* 011 37 d1

* 012 24 d2

* * 如果利用row_number()實現按deptid分組根據age降序取top-3,最後結果為:

* id age deptid

* 007 41 d1

* 011 37 d1

* 009 36 d1

* 010 42 d2

* 008 33 d2

* 006 25 d2

*/public class openwidowfunctiondemo

}

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

1,row number over 排序,連續 select score,row number over from sc 按原始 的成績順序進行排序 原始 成績順序 先將分數從大到小排序,分數相同,排名不同 select score,row number over order by score fr...

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...