关于分类统计前N条的问题
有个表记录的是用户名称和类型,现在想统计出每个类型下随机或者前50个人员的名称(不要用游标,一条语句实现,要用游标的话就不问了)
login_no login_type
aaaa 01
aa11 01
abe 02
445dd 03
………………
还有个问题double的0和float的0有什么区别吗?
为啥double的0.00 <> 0.00呢?
------解决方案--------------------用分析函数吧
------解决方案--------------------使用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仅仅是行数、记录条数的感念。