題目要求,一張表,兩個字段,分別是城市,關鍵字,查找出每個城市關鍵詞的前五。
分析:
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實現)