表A是个职工工资表,现在你写一个sql,实现如下功能:
2.将工资最高的3个职工记录信息按工资从低到高排序放在查询结果的前3个最高工资记录
select decode(sign(4-变量1),1,-变量1,变量1) from dual;
sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1
SQL> select sign(3),sign(-3),sign(0) from dual ;
---------- ---------- ----------
SQL> select empno ,sal ,rn
3 (select empno ,sal ,row_number() over (order by sal desc ) rn from emp)
4 order by decode(sign(4-rn),-rn,rn);
---------- ---------- ----------
SQL> select empno ,sal ,rn
3 (select empno ,sal ,row_number() over (order by sal desc ) rn from emp)
4 order by decode(sign(4-rn),1,-rn,rn);
---------- ---------- ----------