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

2021-08-20 02:05:22 字數 650 閱讀 1472

分析: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實現)

MySql分組取前幾名的寫法

1 準備測試資料 create table tb name varchar 10 val int,memo varchar 20 insert into tb values a 2,a2 a的第二個值 insert into tb values a 1,a1 a的第乙個值 insert into t...

SQL查詢每個分組的前N條記錄

if object id tempdb.dbo.t is not null drop table t create table t id varchar 3 gid int,author varchar 29 title varchar 39 date datetime insert into t ...

SQL查詢每個分組的前N條記錄

在寫乙個儲存過程中,遇到了乙個問題,自己寫的 sql總是執行效率太低,於是上網搜尋,學到了乙個新招,都怪自己平時不愛學習啊,不過這個語法真的很厲害。需求 取乙個表中每個 id的最新三條資料 按照更新時間倒序取 select from t as t where 3 select count from ...