有个表记录的是用户名称和类型,现在想统计出每个类型下随机或者前50个人员的名称(不要用游标,一条语句实现,要用游标的话就不问了)login_no     login_typeaaaa          01
aa11          01
abe           02
445dd         03
………………还有个问题double的0和float的0有什么区别吗?
为啥double的0.00<> 0.00呢?

解决方案 »

  1.   

    使用row_number()查出各部门薪水最高的三个员工姓名、薪水,多于三个的只取三个。SQL> select * from (
      2  select deptno,row_number() over(partition by deptno order by sal desc) rw,ename,sal
      3  from emp
      4  )
      5  where rw<=3;    DEPTNO         RW ENAME             SAL
    ---------- ---------- ---------- ----------
            10          1 KING             5000
                        2 CLARK            2450
                        3 MILLER           1300        20          1 SCOTT            3000
                        2 FORD             3000
                        3 JONES            2975        30          1 BLAKE            2850
                        2 ALLEN            1600
                        3 TURNER           1500
    已选择9行。体会:row_number() 返回的主要是“行”的信息,并没有按照sal排名,如
            20          1 SCOTT            3000
                        2 FORD             3000
    scott与ford薪水一样多,ford前面的2仅仅是行数、记录条数的感念。