Oracle分析函数浅析(三)First/Last排名

如果要查询emp表工资最高和最低的员工姓名(排除工资为null)

按以前的想法一条简单的语句似乎不好实现

最常见的是先升序取最小,再降序取最大

有了First/Last排名后就不一样了

select min(ename) keep(dense_rank first order by sal desc nulls last) first,
min(ename) keep(dense_rank last order by sal desc nulls first) last
from emp
这里需要注意的是min改成max对查询结果是没有任何影响的,如果要改成sum或avg则必须保证括号里面的列是数值类型
posted @ 2011-05-26 15:06  KT野人  阅读(418)  评论(0编辑  收藏  举报