ORACLE中分组之后查询前N条数据的方法

最近遇到这样的问题,留个记录。
使用Oracle提供的方法 ROW_NUMBER() OVER()来实现。

ROW_NUMBER() OVER(partition by 分组字段 order by 排序字段 desc) 其中order by 是必须的,是按这个字段排序生成对应的rownumber。下面的sql查询按地区排序后的前十条语句,假设表DIS_TABLE中有字段cuid,province,status,可用如下sql:

SELECT TB.*
  FROM (SELECT DIS.*,
               ROW_NUMBER() OVER(PARTITION BY DIS.PROVINCE ORDER BY DIS.CUID DESC) RN
          FROM DIS_TABLE DIS) TB
 WHERE TB.RN < 11;

你可能感兴趣的:(ORACLE中分组之后查询前N条数据的方法)