求工资最高人的姓名SELECT T1.姓名 FROM TABLE T1 
WHERE  T1.年龄 >25 AND T1.年龄 <50  AND 
T1.工资=SELECT MAX(F1.工资)  FROM TABLE F1 WHERE  F1.年龄 >25 AND F1.年龄 <50这条语条能简化写吗
使效率更快一些谢谢了!

解决方案 »

  1.   

    SELECT 姓名 FROM (SELECT * FROM T1 WHERE 年龄 >25 AND 年龄 <50 ORDER BY 工资 DESC) WHERE ROWNUM<=1;
      

  2.   

    楼上的sql,只查询出一个人,如果最高工资的有好几个人呢...
      

  3.   

    用分析函数吧,以SCOTT模式为例:SQL>  select ename,sal from emp;ENAME             SAL
    ---------- ----------
    SMITH             800
    ALLEN            1600
    WARD             1250
    JONES            2975
    MARTIN           1250
    BLAKE            2850
    CLARK            2450
    KING             5000
    TURNER           1500
    JAMES             950
    FORD             3000
    MILLER           1300
    HUBERT           5000已选择13行。SQL> select * from (
      2  select rank() over (order by sal desc) rk,ename,sal from emp)
      3  where rk=1;        RK ENAME             SAL
    ---------- ---------- ----------
             1 KING             5000
             1 HUBERT           5000已选择2行。
      

  4.   

    SELECT first_value(T1.姓名)over(order by T1.工资 desc) FROM TABLE T1 
    WHERE  T1.年龄 >25 AND T1.年龄 <50