技术标签: 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原来的顺序排序,即得题目中要求的结果。
文章浏览阅读3.8k次。前言在上一篇文章中,我们学习了如何利用人家自带的模型去检测图片中的物体,接下来我们继续利用自带模型检测视频中的物体。自带的模型检测是非常强大的,可以检测很多东西,狗、猫、人、车等等,现在我们就来用自带模型去检测一个人多的视频,看一下是什么效果。1.复制一下源代码首先在object_detection文件夹下进入jupyter notebook打开自带的物体检测代码复制一下这个代码..._视频物体检测有哪些方法
文章浏览阅读741次,点赞15次,收藏28次。博主介绍:CSDN特邀作者、985计算机专业毕业、某互联网大厂高级全栈开发程序员、码云/掘金/华为云/阿里云/InfoQ/StackOverflow/github等平台优质作者、专注于Java、小程序、前端、python等技术领域和毕业项目实战,以及程序定制化开发、全栈讲解、就业辅导、面试辅导、简历修改。精彩专栏 推荐订阅2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐。
文章浏览阅读3.1k次。解决 vscode 无法使用 compilerPath......_无法使用 compilerpath 解析配置
文章浏览阅读734次。类:• Struts1要求Action类继承一个抽象基类。Struts1的一个普遍问题是使用抽象类编程而不是接口。• Struts 2 Action类可以实现一个Action接口,也可实现其他接口,使可选和定制的服务成为可能。Struts2提供一个ActionSupport基类去实现常用的接口。Action接口不是必须的,任何有execute标识的POJO对象都可以用作Struts2的Action_1.说一下struts1和struts2 优缺点。
文章浏览阅读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语言 怎么实现函数参数可传可不传
文章浏览阅读4.4k次。<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title></title> <link href="css/css.css" type="text/css" rel="styles_网页自动回复html
文章浏览阅读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
文章浏览阅读1k次。【代码】加训(个人纪录)_a. musical puzzle
文章浏览阅读418次。作为”一带一路“和长江经济带的联结点,重庆是中西部高质量发展的重要增长地。西部(重庆)科学城是重庆科技创新的重大平台,重庆AI PARK园区便坐落于重庆市西部科学城核心区域,金融街片区凤鸣湖畔。AI PARK是特斯联打造的人工智能城市项目的先行示范区。是全球首个落地的AICITY微缩旗舰版样板点,建筑面积约6000平米,总投资3亿元,内设多个主题体验厅与智能实验室。包括行走的AI机器人,灯杆、垃圾桶等智能终端、50+IoT协议应用,自研算法加持。_大型创意文化园的智慧文化系统建设项目
文章浏览阅读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次。从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。..._重载和重写