對於emp 表,不用聚合函式求出最高工資
如果使用聚合函式的話,求出最高工資比較方便
select max(sal) from emp;
如果不使用聚合函式的話,該從哪個方向出發呢?
可以排序,然後從排序後的結果中取工資最高的;可以取出除最高工資之外的所有工資,然後再排除,剩下最高工資。
select * from emp order by sal desc工資最高的5000 就排在第乙個,接下來再取第乙個即可
select a.sal from (select * from emp order by sal desc) a where rownum = 1;
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
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;
好了,這裡介紹三種方法,你還有其它的方法嗎,分享出來吧,一起學習。
部門最高工資的員工
employee 表包含所有員工資訊,每個員工有其對應的 id,salary 和 department id。id name salary departmentid 1 joe 70000 1 2 henry 80000 2 3 sam 60000 2 4 max 90000 1 departmen...
求第二高工資
解題思路 求出最大工資a,select top 1 salary from employee where salary 值得注意的乙個問題是 如果不存在第二高的薪水 怎麼返回null?第一次這樣寫是不能返回null的 select top 1 salary from employee where s...
1491 去掉最低工資和最高工資後的工資平均值
示例1 輸入 salary 4000,3000,1000,2000 輸出 2500.00000 解釋 最低工資和最高工資分別是 1000 和 4000 去掉最低工資和最高工資以後的平均工資是 2000 3000 2 2500 示例2 輸入 salary 1000,2000,3000 輸出 2000....