oracle中有rownum伪列,select rownum from t where rownum<3;表示取整个结果集的前2条记录
当时如果要取分组后每个组里的前几条记录,则rownum无法实现,必须使用oracle里的分析函数,比如row_number()over(partition by 分组字段 order by 排序字段),实现分组后编号
select s.*
from (select row_number() over(partition by p.trader order by p.branch) rn,p.*
from spotdeal p) s
where s.rn < 3