设为首页 加入收藏

TOP

不用聚合函数求最高工资
2015-11-21 01:25:51 来源: 作者: 【 】 浏览:0
Tags:不用 聚合 函数 最高 工资

对于emp 表,不用聚合函数求出最高工资

\

如果使用聚合函数的话,求出最高工资比较方便

?

select max(sal) from emp;
\

?

如果不使用聚合函数的话,该从哪个方向出发呢?

可以排序,然后从排序后的结果中取工资最高的;可以取出除最高工资之外的所有工资,然后再排除,剩下最高工资。

method1 按工资收入降序排列

?

select * from emp order by sal desc

?

\

工资最高的5000 就排在第一个,接下来再取第一个即可

?

select a.sal from (select * from emp order by sal desc) a where rownum = 1;

?

\

method2 取最高工资之外的所有工资

?

select e2.sal from emp e1,emp e2 where e1.sal>e2.sal;

这里采用自连接,判断条件 e1.sal > e2.sal,结果取的是e2.sal,这注定最高工资不可能出现在结果集中

?

\

然后 再在emp 表中,排除掉上面结果集的sal,剩余的就是最高的sal了

?

select e.sal from emp e where e.sal not in(select e2.sal from emp e1,emp e2 where e1.sal>e2.sal);

\

?

看到第二种方法,突然想到第三种方法,那就是用上distinct 和 minus

method3 沿用 method2 的思路

?

select distinct e2.sal from emp e1,emp e2 where e1.sal>e2.sal;

\

?

再用emp 中所有sal 和 上面集合中的sal 求minus

?

select distinct sal from emp
minus
select distinct e2.sal from emp e1,emp e2 where e1.sal>e2.sal;

\

?

好了,这里介绍三种方法,你还有其它的方法吗,分享出来吧,一起学习。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇MongoDB基本文件操作 下一篇AerospikeC客户端手册―――Benc..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: