SQL练习14、雇员中谁的工资第二高(考虑并列第一的情况,如何处理)。

Oracle中emp表的操作,要求查询出雇员中谁的工资第二高,并且考虑并列第一的时候如何处理。习题答案是:selectenamefrom(selectename,salf... Oracle中emp表的操作,要求查询出雇员中谁的工资第二高,并且考虑并列第一的时候如何处理。习题答案是:select ename from (select ename ,sal from (select * from emp order by sal desc) where rownum<=2 order by sal) where rownum<=1;答案我没有看懂。我自己的回答是:select ename,sal from emp where
sal=(select max(sal) from emp where sal!=(select max(sal) from emp)); 帮我比较下这两条语句,那条更好。为什么。
展开
 我来答
匿名用户
2013-06-10
展开全部
上面的好。他是先将金额按倒序排然后在查行号为二的那跳记录。你写的sql文有点问题的
丨灬空城旧梦丶
2017-08-07
知道答主
回答量:3
采纳率:0%
帮助的人:2万
展开全部
select * from emp where sal=(select max(sal) from emp where sal<>(select max(sal) from emp));
思路是,先把最高的剔除掉,select max(sal) from emp,然后,再找剔除后的最高的select max(sal) from emp where sal<>(select max(sal) from emp),最后,查sal=第二高的就行。主要是思路要清晰。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-10
展开全部
(select ename ,sal from (select * from emp order by sal desc) where rownum<=2 order by sal) where rownum<=1;个人认为是这个 你的那种事属于子查询 要说也行 可第一个是行列的那种 只是建议
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
月卿墨
推荐于2018-04-05
知道答主
回答量:32
采纳率:0%
帮助的人:10.3万
展开全部

所给答案如果是第一高、第二高的工资人数都不止一人的话是不能解决问题的。

SELECT EMPNO,ENAME,SAL

FROM EMP

/

以下是我的思路,看似虽多,其实仔细琢磨,是很简单的。

SELECT EMPNO,ENAME,SAL

FROM (SELECT EMPNO,ENAME,SAL FROM EMP

      WHERE SAL<(SELECT MAX(SAL) FROM EMP))

WHERE SAL>=ALL(SELECT SAL FROM EMP

            WHERE SAL <(SELECT MAX(SAL) FROM EMP))

/

其实:解决问题的思路有很多,答案不唯一。数据库的优化就需要考虑这些问题了。

偶然看到了,说了几句,希望能帮到你!!!

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ab608f2
2015-04-14
知道答主
回答量:1
采纳率:0%
帮助的人:1244
展开全部
SELECT sal,ename
FROM ( SELECT dense_rank()over (
ORDER BY sal DESC
) AS rank,sal,ename
FROM emp
)
WHERE rank > = 2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式