大概如下:select * from (select a.*,
row_number() over (partiton by(type) order by degree) rn,
count(*) over (partiton by(type) ) cnt from table_name)
where rn<=2

解决方案 »

  1.   

    语法对的:select * from (select a.*,
    row_number() over (partition by(type) order by degree) rn,
    count(*) over (partition by(type) ) cnt from table_name a)
    where rn<=2
      

  2.   

    不多次的话只能采用分析函数实现了,
    另外你说前两条数据是按什么顺序排序的前两条?
    下面语句是按数据读取顺序取得前两条,根据自己需要修改order
    SELECT * FROM(
    SELECT TABLE1.*,COUNT(1) OVER(PARTITION BY TYPE)  C,
    ROW_NUMBER()OVER(PARTITION BY TYPE ORDER BY ROWNUM) RN
    From TABLE1
    )WHERE RN<=2
      

  3.   

    呵呵,也还没休息啊,都是夜猫子类型的
    上班上不了CSDN论坛,刚无意点了一下,看看,顺便回一下,哈
      

  4.   


    抱歉,少写了,按degree排,非常感谢