【SQL 学习】求一个表中列值的最前三名

简介:
表A是个职工工资表,现在你写一个sql,实现如下功能:
1.返回表中所有结果
2.将工资最高的3个职工记录信息按工资从低到高排序放在查询结果的前3个最高工资记录
3.其他的记录以正常的select结果输出
写一个sql来实现
利用
比较大小
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 ;
   SIGN(3)   SIGN(-3)    SIGN(0)                                                
---------- ---------- ----------                                                
         1         -1          0 
SQL> conn scott/yang
已连接。
SQL> select empno ,sal ,rn
  2  from
  3  (select empno ,sal ,row_number() over (order by sal desc ) rn from emp)
  4  order by decode(sign(4-rn),-rn,rn);

     EMPNO        SAL         RN                                                
---------- ---------- ----------                                                
      7839       5000          1                                                
      7902       3000          2                                                
      7788       3000          3                                                
      7566       2975          4                                                
      7698       2850          5                                                
      7782       2450          6                                                
      7369        800         14                                                
      7844       1500          8                                                
      7934       1300          9                                                
      7521       1250         10                                                
      7654       1250         11 
      7876       1100         12                                                
      7900        950         13                                                
      7499       1600          7                                                

已选择14行。

SQL> select empno ,sal ,rn
  2  from
  3  (select empno ,sal ,row_number() over (order by sal desc ) rn from emp)
  4  order by decode(sign(4-rn),1,-rn,rn);

     EMPNO        SAL         RN                                                
---------- ---------- ----------                                                
      7788       3000          3                                                
      7902       3000          2                                                
      7839       5000          1                                                
      7566       2975          4                                                
      7698       2850          5                                                
      7782       2450          6                                                
      7499       1600          7                                                
      7844       1500          8                                                
      7934       1300          9                                                
      7521       1250         10                                                
      7654       1250         11                                                
      7876       1100         12                                                
      7900        950         13                                                
      7369        800         14                                                
已选择14行。
相关文章
|
2月前
|
SQL 缓存 关系型数据库
MySQL技能完整学习列表6、查询优化——3、查询缓存——4、SQL优化技巧
MySQL技能完整学习列表6、查询优化——3、查询缓存——4、SQL优化技巧
65 0
|
3月前
|
SQL 测试技术 项目管理
轻松学习SQL外键约束的核心原理和实用技巧
轻松学习SQL外键约束的核心原理和实用技巧
48 0
|
2月前
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
51 0
|
1月前
|
SQL 数据库 内存技术
学习数据库要掌握的54条SQL查询语句
学习数据库要掌握的54条SQL查询语句
14 0
|
2月前
|
SQL 安全 关系型数据库
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
MySQL技能完整学习列表3、SQL语言基础——3、SQL运算符和函数
36 0
|
3月前
|
SQL Java 关系型数据库
JDBC技术【SQL注入、JDBC批量添加数据、JDBC事务处理、其他查询方式】(三)-全面详解(学习总结---从入门到深化)
JDBC技术【SQL注入、JDBC批量添加数据、JDBC事务处理、其他查询方式】(三)-全面详解(学习总结---从入门到深化)
33 0
|
4月前
|
SQL
SQL高阶学习
SQL高阶学习
17 0
|
4月前
|
SQL 关系型数据库 MySQL
解密 sqli靶场第一关:一步一步学习 SQL 注入技术
解密 sqli靶场第一关:一步一步学习 SQL 注入技术
41 0
解密 sqli靶场第一关:一步一步学习 SQL 注入技术
YI
|
9月前
|
SQL 存储 关系型数据库
SQL学习总结
SQL学习总结
YI
51 0
|
4月前
|
存储 SQL 关系型数据库
小白带你学习linux SQL语句(二十八)
小白带你学习linux SQL语句(二十八)
67 0