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
查詢結果