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
查询结果