oracle复杂查询练习题

1.删除重复记录(当表中无主键时)

www.2cto.com

Sql代码

create table TESTTB(

bm varchar(4),

mc varchar2(20)

)

insert into TESTTB values(1,'aaaa');

insert into TESTTB values(1,'aaaa');

insert into TESTTB values(2,'bbbb');

insert into TESTTB values(2,'bbbb');

/*方案一*/

delete from TESTTB where rowid not in

(select max(rowid) from TESTTB group by TESTTB.BM,TESTTB.MC)

/*方案二*/

delete from TESTTB a where a.rowid!= (

select max(rowid) from TESTTB b where a.bm=b.bm and a.mc=b.mc

)

2.bookEnrol是用来登记的,不管你是借还是还,都要添加一条记录。

请写一个SQL语句,获取到现在状态为已借出的所有图书的相关信息,

ID为3的java书,由于以归还,所以不要查出来。要求查询结果应为:(被借出的书和被借出的日期)

Sql代码

create table book(

id int ,

name varchar2(30),

PRIMARY KEY (id)

)

insert into book values(1,'English');

insert into book values(2,'Math');

insert into book values(3,'JAVA');

create table bookEnrol(

id int,

bookId int,

dependDate date,

state int,

FOREIGN KEY (bookId) REFERENCES book(id) ON DELETE CASCADE

)

insert into bookEnrol values(1,1,to_date('2009-01-02','yyyy-mm-dd'),1);

insert into bookEnrol values(2,1,to_date('2009-01-12','yyyy-mm-dd'),2);

insert into bookEnrol values(3,2,to_date('2009-01-14','yyyy-mm-dd'),1);

insert into bookEnrol values(4,1,to_date('2009-01-17','yyyy-mm-dd'),1);

insert into bookEnrol values(5,2,to_date('2009-02-14','yyyy-mm-dd'),2);

insert into bookEnrol values(6,2,to_date('2009-02-15','yyyy-mm-dd'),1);

insert into bookEnrol values(7,3,to_date('2009-02-18','yyyy-mm-dd'),1);

insert into bookEnrol values(8,3,to_date('2009-02-19','yyyy-mm-dd'),2);

www.2cto.com

/*方案一*/

select a.id,a.name,b.dependdate from book a,bookenrol b where

a.id=b.bookid

and

b.dependdate in(select max(dependdate) from bookenrol group by bookid )

and b.state=1

/*方案二*/

select k.id,k.name,a.dependdate

from bookenrol a, BOOK k

where a.id in (select max(b.id) from bookenrol b group by b.bookid)

and a.state = 1

and a.bookid = k.id;

3.查询每年销量最多的产品的相关信息

www.2cto.com

Sql代码

create table t2 (

year_ varchar2(4),

product varchar2(4),

sale    number

)

insert into t2 values('2005','a',700);

insert into t2 values('2005','b',550);

insert into t2 values('2005','c',600);

insert into t2 values('2006','a',340);

insert into t2 values('2006','b',500);

insert into t2 values('2007','a',220);

insert into t2 values('2007','b',350);

insert into t2 values('2007','c',350);

/**方案一*/

select a.year_,a.sale,a.product from t2 a inner join(

select max(sale) as sl from t2 group by year_) b

on a.sale=b.sl  order by a.year_

/*方案二*/

select sa.year_, sa.product, sa.sale

from t2 sa,

(select t.year_ pye, max(t.sale) maxcout

from t2 t

group by t.year_) tmp

where sa.year_ = tmp.pye

and sa.sale = tmp.maxcout

4.排序问题,如果用总积分做降序排序..因为总积分是字符型,所以排出来是这样子(9,8,7,6,5...),要求按照总积分的数字大小排序。

www.2cto.com

Sql代码

create table t4(

姓名   varchar2(20),

月积分 varchar2(20),

总积分 char(3)

)

insert into t4 values('WhatIsJava','1','99');

insert into t4 values('水王','76','981');

insert into t4 values('新浪网','65','96');

insert into t4 values('牛人','22','9');

insert into t4 values('中国队','64','89');

insert into t4 values('信息','66','66');

insert into t4 values('太阳','53','66');

insert into t4 values('中成药','11','33');

insert into t4 values('西洋参','257','26');

insert into t4 values('大拿','33','23');

www.2cto.com

/*方案一*/

select * from t4 order by cast(总积分 as int) desc

/*方案二*/

select * from t4 order by to_number(总积分) desc;

www.2cto.com

5.得出所有人(不区分人员)每个月及上月和下月的总收入

Sql代码

create table t5 (  tmonth int,

tname varchar2(10),

income number

)

insert into t5 values('08','a',1000);

insert into t5 values('09','a',2000);

insert into t5 values('10','a',3000);

/*方案一*/

select o.tmonth,sum(o.income) as cur,(select sum(t.income) from t5 t where t.tmonth=(o.tmonth+1) group by t.tmonth) as next,

(select sum(t.income) from t5 t where t.tmonth=(o.tmonth-1) group by t.tmonth) as last

from t5 o where o.tmonth=2 group by o.tmonth

/*方案二*/

select tmonth as 月份 ,tname as 姓名,sum(income) as 当月工资,

(select sum(income)

from t5

where tmonth = to_number(substr(to_char(sysdate,'yyyy-mm-dd'),7,1))-1) AS 上月工资 ,

(select sum(income)

from t5

where tmonth = to_number(substr(to_char(sysdate,'yyyy-mm-dd'),7,1))+1) AS 下月工资

from t5 where tmonth=substr(to_char(sysdate,'yyyy-mm-dd'),7,1)

group by tmonth,tname

6.根据现有的学生表,课程表,选课关系表,查询一。没有修过李明老师的课的学生,查询二,既学过a课程,又学过b课程的学生姓名

www.2cto.com

Sql代码

S表    [SNO,SNAME]--学生表

C表    [CNO,CNAME,CTEATHER] --课程表

SC表  [SNO,CNO,SCGRADE] --选课关系表

查询一:没有修过李明老师的课的学生的姓名

select sname from s where not exists

(select*from sc,c where sc.cno=c.cno and c.cteather='李明' and sc.sno=s.sno)

查询二:既学过a课程,又学过b课程的学生姓名

SELECT S.SNO,S.SNAME

FROM S,(

SELECT SC.SNO

FROM SC,C

WHERE SC.CNO=C.CNO

AND C.CNAME IN('a','b')

GROUP BY SNO

)SC WHERE S.SNO=SC.SNO

www.2cto.com

查询三: 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

SELECT S.SNO,S.SNAME,AVG(SC.SCGRADE)

FROM S,SC,(

SELECT SNO

FROM SC

WHERE SCGRADE <60

GROUP BY SNO

HAVING COUNT(DISTINCT CNO)>=2

)A WHERE S.SNO=A.SNO AND SC.SNO=A.SNO

GROUP BY S.SNO,S.SNAME

oracle面试题关于课程表获取最高分和名字并且去掉重复,oracle复杂查询练习题相关推荐

  1. oracle如何自动分析报告,ORACLE 性能分析报告的获取

    ORACLE 性能分析报告的获取: 我们都知道,在oracle数据库当中有性能分析报告的设计,如ASH,AWR,ADDM,AWRDD,AWRSQRPT,这些报告就像我们去医院的检查报告一样,我们在这个 ...

  2. oracle经常考的题型是哪些,Oracle考试试题(带答案).doc

    Oracle考试试题(带答案) 选择(每题3分) 1)当Oracle服务器启动时,下列哪种文件不是必须的().a)数据文件b)控制文件c)日志文件d)归档日志文件参考答案D 2)在Oracle中,当用 ...

  3. oracle面试题汇总

    一.表的创建: 一个通过单列外键联系起父表和子表的简单例子如下: CREATE TABLE parent(id INT NOT NULL,                      PRIMARY K ...

  4. 部分常见ORACLE面试题以及SQL注意事项

    一.表的创建: 一个通过单列外键联系起父表和子表的简单例子如下: CREATE TABLE parent(id INT NOT NULL, PRIMARY KEY (id) ) CREATE TABL ...

  5. 云和恩墨的两道Oracle面试题

    云和恩墨的两道Oracle面试题 真题1. 对于一个NUMBER(1)的列,如果查询中的WHERE条件分别是大于3和大于等于4,那么这二者是否等价? 答案:首先对于查询结果而言,二者没有任何区别.从这 ...

  6. oracle面试题答案,Oracle面试题笔试题及参考答案

    一套Oracle面试题笔试题及参考答案 Oracle, 笔试, 面试 完成下列操作,写出相应的SQL语句 1.创建表空间neuspace,数据文件命名为neudata.dbf,存放在d:\data 目 ...

  7. Oracle数据库面试题 精选 Oracle 面试题

    Oracle数据库面试题 1.解释冷备份和热备份的不同点以及各自的优点 冷备份 发生在数据库已经正常关闭的情况下,将关键性文件拷贝到另外位置的一种说法.适用于所有模式的数据库. 优点 1. 是非常快速 ...

  8. oracle不属于集合操作,oracle 笔试题

    ORACLE笔试题 一.单选题 1.在Oracle中,以下不属于集合操作符的是(). A.UNIONB.SUMC.MINUSD.INTERSECT 2.在Oracle中,执行下面的语句: SELECT ...

  9. oracle 测试试题,oracle试题

    ㈠ oracle考试题 1.数据库是长期储存在计算机内.有组织的.可共享的大量数据的集合. 2.Oracle数据库专的版属本:Oracle 8i ,oracle 9i,oracle 10g.最后一个是 ...

最新文章

  1. 文字超过省略_从楚篆到楚玺的文字结构
  2. [Skr-Shop]购物车之架构设计
  3. Handler研究2-AsyncTask,AsyncQueryHandler分析
  4. 理解一下jQuery.extend()和jQuery.fn.extend()方法
  5. LeetCode 17. Letter Combinations of a Phone Number
  6. jQuery中ajax的4种常用请求方式
  7. 【原】相煎何太急——input的blur事件与button的click事件
  8. 《TCP/IP详解》学习笔记(七):广播和多播、IGMP协议
  9. static内容相关介绍学习
  10. Oracle数据库中正确的导入dmp数据库文件
  11. 已免押1000亿!芝麻信用:靠信用出去浪
  12. python网站设计中接口的作用_python接口自动化(三)--如何设计接口测试用例(详解)...
  13. luogu p1652 圆
  14. vbs实现恶搞无限弹窗,复制粘贴就能用
  15. word设置多级标题样式及编号
  16. mysql基础命令(一)
  17. 联想thinkpad待机怎么唤醒_联想电脑睡眠无法唤醒_联想电脑睡眠怎么唤醒
  18. RoboMaster视觉教程(4)装甲板识别算法
  19. 模拟退火(Simulated Annealing)算法 PO J1379 2420
  20. 在浙江php就业岗位,找工作的小伙伴快看过来!浙江多地最新教师就业岗位信息来了...

热门文章

  1. 华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布 | 极客头条...
  2. 落地即王道,锁死企业智变CP——云+AI
  3. 18 段代码带你玩转 18 个机器学习必备交互工具
  4. 微服务架构下,大型银行数据库应用实践
  5. 代码测试意味着完全消灭了 Bug?
  6. 苹果 Mac 图标设计背后的故事!
  7. 华米OV坐不住了!九大手机厂商围剿微信小程序
  8. Java程序员春招三面蚂蚁金服,1-7中HashMap死循环分析
  9. python-mysql数据插入与查询
  10. resultmap的写法_Mybatis的ResultMap的使用