加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

不用聚合函数求最高工资

发布时间:2020-12-13 22:16:26 所属栏目:百科 来源:网络整理
导读:对于emp 表,不用聚合函数求出最高工资 如果使用聚合函数的话,求出最高工资比较方便 select max(sal) from emp; 如果不使用聚合函数的话,该从哪个方向出发呢? 可以排序,然后从排序后的结果中取工资最高的;可以取出除最高工资之外的所有工资,然后再排除


对于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;


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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读