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

 查询结果

 

 

原文地址:https://www.cnblogs.com/dw-date/p/12809937.html