如何取每個分組中的前幾項輸出

題目要求,一張表,兩個字段,分別是城市,關鍵字,查找出每個城市關鍵詞的前五。

分析:

    1.首先要求的每個維度是城市+關鍵字 -> 根據城市和關鍵字分組求出數量

    2.要找到前五輸出,想到ROW_NUMBER() 開窗函數

實現如下:

select * from (select city,keyss,count(*),row_number() over(partition by city order by count(*) desc) ck from tab group by city,keyss) where ck<6

注意:如果直接將row_number函數寫在最外邊的條件中,別名標籤會失效

    錯誤示例:

    

select city,keyss,row_number() over(partition by city order by c desc) ck from (select city,keyss,count(*)as c from tab group by city,keyss) t where ck <3; 

FAILED: SemanticException [Error 10004]: Line 1:156 Invalid table alias or column reference 'ck': (possible column names are: city, keyss, c)


(本答案不唯一,上述爲一種簡單的HQL實現)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章