日期:2014-05-16  浏览次数:20358 次

ORACLE 先分组后排序,取出没一类的头几条数据

--先根据A进行分组,再在组内根据B进行排序。rn<3取出每一类的头三条数据


SELECT *
  FROM (SELECT T.B,
               T.A,
               ROW_NUMBER() OVER(PARTITION BY T.A ORDER BY T.B DESC) RN
          FROM DUAL T)
 WHERE RN <= 3;