表中有字段
empid (编号),departnm(部门名),overtime(时间)
 用
select departnm,empid,sum(overtime)
from tb
group by  departnm,empid可以得到各个部门每个人的时间总计如果只要各个部门中时间总计在排名前10名的数的
得怎么写呢?

解决方案 »

  1.   

    select * from(
    select departnm,empid,sum(overtime) 
    from tb 
    group by  departnm,empid
    )
    --前10
    WHERE ROWNUM<11 
    order by  overtime
      

  2.   

    select * from(
    select departnm,empid,sum(overtime) overtime
    from tb 
    group by  departnm,empid
    order by  overtime desc
    )
    WHERE ROWNUM<11 
      

  3.   

    select * from(
    select departnm,empid,sum(overtime) overtime 
    from tb 
    group by  departnm,empid
    order by  overtime desc
    )
    WHERE ROWNUM<11; 
      

  4.   


    select b.departnm b.empid, b.sn
    from(
      select a.departnm,a.empid,a.sn, rownum rn
      from(
        select departnm,empid,sum(overtime)  sn
        from tb 
        group by  departnm,empid
      )a order by a.sn desc
    )b where b.rn<11
      

  5.   

    select *
    from(
      select departnm,empid,dense_rank()over(partition by departnm order by sum(overtime)desc)dk
      from tb
      group by departnm,empid)
    where dk<=10
      

  6.   

    select * from (
    select empid,departnm,sum(overtime) time from tb
    group by empid
    order by time) where rownum<=10 and group by departnm