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

 查询结果

 

 

 

 

posted on 2020-04-30 17:13  爱吃萝卜青菜  阅读(1501)  评论(0编辑  收藏  举报