orcale 查詢分組後的前n條記錄

2021-08-01 22:20:40 字數 740 閱讀 6968

orcale 查詢分組後的前n條記錄

使用row_number() over(partition by col1,col2 order by col3 desc)

示例如下:

select * from (select col1,col2,col4,row_number() over(partition by col1,col2 order by col3 desc) e from table1 where col5=『55』) t where e <= 2

以col1,col2 分組,然後根據col3降序排序  然後再取分組後的每組的前5條記錄 

col1 col2  col3   e

a1      a2     c2    1

a1      a2     c1    2

a1      b2     c2    1

a1      b2     c1    2

a1      b3     c2    1

a1     b3     c1     2

.................................

a11      b3     c2    1

a11     b3     c1     2

................................

注:group by  order by (1)先group 再order (2) order by中的列必須要在group by中

分組後取前N條

這種題目面試中經常出現,記錄一下 首先建表 create table students id int 11 not null auto increment comment 學號 clss id varchar 2 default null comment 班級id stu name varchar ...

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 ...