hive 查詢排名的開窗函數row_number()


hive中的over()開窗函數還有很多,但是特別有用的 還是row_number() 還是排名函數

平時平時使用聚合函數比較多,但是對於某些需求,group by使用起來會很吃力,而且子查詢很多,這時候就用到了開窗函數。

 

 row_number() over(PARTITION BY station_code ORDER BY COUNT(1)  DESC) AS rn

PARTITION BY 后面加 按照什么字段分組 

ORDER BY   后面加 按照什么字段排序  

 

需求:求出銷售量前20的兩個車站的線路。

SELECT t.line_name, t.order_cont, t. rn
  FROM (SELECT line_name,
               row_number() over(PARTITION BY station_code ORDER BY COUNT(1) DESC) AS rn,
               COUNT(1) AS order_cont
          FROM tkt_sell
         WHERE station_code IN ('gykydz', 'klsklkcz')
         GROUP BY line_name, station_code) t
 WHERE t.rn <= 5

 查詢結果

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM