oracle sql经典面试题,经典SQL面试题2-程序员宅基地

技术标签: oracle sql经典面试题  

题目:

一张名为workersalary的表,要求查询出全部信息,并且salary最高的三个人按升序排列在结果的最开头,其余的人按原有顺序排列。这个sql如何写?

解答:

(1)题意理解

假如原先的表是这样的

namesalary

Liu

Yi2000

Chen

Er1000

Zhang

San5000

Li

Si4000

Wang

Wu8000

Zhao

Liu6000

Sun

Qi7000

Zhou

Ba3000

题目要求变成这样

namesalary

Zhao

Liu6000

Sun

Qi7000

Wang

Wu8000

Liu

Yi2000

Chen

Er1000

Zhang

San5000

Li

Si4000

Zhou

Ba3000

(2)创建表并插入数据

create

table workersalary(name varchar2(10), salary number(10));

insert

into workersalary values('Liu Yi',2000);

insert

into workersalary values('Chen Er',1000);

insert

into workersalary values('Zhang San',5000);

insert

into workersalary values('Li Si',4000);

insert

into workersalary values('Wang Wu',8000);

insert

into workersalary values('Zhao Liu',6000);

insert

into workersalary values('Sun Qi',7000);

insert

into workersalary values('Zhou Ba',3000);

验证

select

* from workersalary;

NAME

SALARY

------------------------------

----------

Liu

Yi 2000

Chen

Er 1000

Zhang

San 5000

Li

Si 4000

Wang

Wu 8000

Zhao

Liu 6000

Sun

Qi 7000

Zhou

Ba 3000

8

rows selected.

(3)符合题意的sql语句为

select

* from

(select

workersalary.*, rownum rn1, row_number() over (order by salary desc)

rn2 from workersalary)

order

by case when rn2<=3 then -rn2 else rn1 end;

执行后的结果为

NAME

SALARY RN1 RN2

------------------------------

---------- ---------- ----------

Zhao

Liu 6000 6 3

Sun

Qi 7000 7 2

Wang

Wu 8000 5 1

Liu

Yi 2000 1 7

Chen

Er 1000 2 8

Zhang

San 5000 3 4

Li

Si 4000 4 5

Zhou

Ba 3000 8 6

8

rows selected.

(4)分析

内查询select

workersalary.*, rownum rn1, row_number() over (order by salary desc)

rn2 from workersalary得到的是按工资降序排列的纪录

NAME

SALARY RN1 RN2

------------------------------

---------- ---------- ----------

Wang

Wu 8000 5 1

Sun

Qi 7000 7 2

Zhao

Liu 6000 6 3

Zhang

San 5000 3 4

Li

Si 4000 4 5

Zhou

Ba 3000 8 6

Liu

Yi 2000 1 7

Chen

Er 1000 2 8

在此基础上,用case

when rn2<=3 then -rn2 else

rn1进行排序,前三个纪录进行逆序(即升序),剩余的则按rn1原来的顺序排序,即得题目中要求的结果。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42349277/article/details/116372285

智能推荐

AI学习(三):视频中的物体检测_视频物体检测有哪些方法-程序员宅基地

文章浏览阅读3.8k次。前言在上一篇文章中,我们学习了如何利用人家自带的模型去检测图片中的物体,接下来我们继续利用自带模型检测视频中的物体。自带的模型检测是非常强大的,可以检测很多东西,狗、猫、人、车等等,现在我们就来用自带模型去检测一个人多的视频,看一下是什么效果。1.复制一下源代码首先在object_detection文件夹下进入jupyter notebook打开自带的物体检测代码复制一下这个代码..._视频物体检测有哪些方法

基于ssm+vue.js+uniapp小程序的高校图书馆个性化服务附带文章和源代码部署视频讲解等-程序员宅基地

文章浏览阅读741次,点赞15次,收藏28次。博主介绍:CSDN特邀作者、985计算机专业毕业、某互联网大厂高级全栈开发程序员、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序、前端、python等技术领域和毕业项目实战,以及程序定制化开发、全栈讲解、就业辅导、面试辅导、简历修改。精彩专栏 推荐订阅2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐。

vscode 无法使用 compilerPath“D:.../bin/arm-none-eabi-g++.exe”解析配置。_无法使用 compilerpath 解析配置-程序员宅基地

文章浏览阅读3.1k次。解决 vscode 无法使用 compilerPath......_无法使用 compilerpath 解析配置

struts1与struts2的各个优点和缺点_1.说一下struts1和struts2 优缺点。-程序员宅基地

文章浏览阅读734次。类:• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action_1.说一下struts1和struts2 优缺点。

函数传值的三种方法_c语言 怎么实现函数参数可传可不传-程序员宅基地

文章浏览阅读1.9k次。第一种:#include using namespace std;void myswap(int x,int y){ int t; t=x; x=y; y=t;}int main(){ int a,b; cout cin>>a>>b; myswap(a,b); cout cout _c语言 怎么实现函数参数可传可不传

web聊天自动回复--HTML_网页自动回复html-程序员宅基地

文章浏览阅读4.4k次。&lt;!DOCTYPE html&gt;&lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8" /&gt; &lt;title&gt;&lt;/title&gt; &lt;link href="css/css.css" type="text/css" rel="styles_网页自动回复html

随便推点

ubuntu18配置opencv 带有opencv_contrib_ubuntu18配置opencv contrib-程序员宅基地

文章浏览阅读330次。整体安装参考博客第一个坑:~/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:673:20: fatal error: boostdesc_bgm.i: No such file or directory网络差,下载失败。解决方法:自行下载后拷贝到该目录。下载链接:https://files.cnblogs.com/files/a..._ubuntu18配置opencv contrib

加训(个人纪录)_a. musical puzzle-程序员宅基地

文章浏览阅读1k次。【代码】加训(个人纪录)_a. musical puzzle

优秀智慧园区案例 - 重庆AI PARK智慧创意园区,先进智慧园区建设方案经验_大型创意文化园的智慧文化系统建设项目-程序员宅基地

文章浏览阅读418次。作为”一带一路“和长江经济带的联结点,重庆是中西部高质量发展的重要增长地。西部(重庆)科学城是重庆科技创新的重大平台,重庆AI PARK园区便坐落于重庆市西部科学城核心区域,金融街片区凤鸣湖畔。AI PARK是特斯联打造的人工智能城市项目的先行示范区。是全球首个落地的AICITY微缩旗舰版样板点,建筑面积约6000平米,总投资3亿元,内设多个主题体验厅与智能实验室。包括行走的AI机器人,灯杆、垃圾桶等智能终端、50+IoT协议应用,自研算法加持。_大型创意文化园的智慧文化系统建设项目

python保存数据框_Python 保存数据的方法:-程序员宅基地

文章浏览阅读1k次。open函数保存使用with open()新建对象写入数据(这里使用的是爬取豆瓣读书中一本书的豆瓣短评作为例子)123456789101112131415161718import requestsfrom lxmlimport etree#发送Request请求url= 'https://book.douban.com/subject/1054917/comments/'head= {'User-..._储存为数据框

自考工作分析之工作分析的历史与发展_工作分析的历史 苏格拉底-程序员宅基地

文章浏览阅读1.4k次。一、工作分析的产生与发展(一)工作分析的思想探源 工作分析的思想起源于社会分工思想,先驱工作者:管仲、旬况、苏格拉底、柏拉图、亚当.斯密。(二)西方国家工作分析的发展历程 (1)工作分析的萌芽 1747年,狄德罗在编纂百科全书的过程实施了一次工作分析。 (2)泰勒的科学管理原理 系统的工作分析最早出现于19世纪末20世纪初。它是美国科学管理之父--F.W._工作分析的历史 苏格拉底

重写与重载_重载和重写-程序员宅基地

文章浏览阅读2.5k次。从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。..._重载和重写