共计 5596 个字符,预计需要花费 14 分钟才能阅读完成。
这篇文章将为大家详细讲解有关 oracle 中 sql 试题有哪些,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
待验证
1. 创建一张学生信息表 student_info,包含以下信息:学号、姓名、性别、生日、家庭住址、联系电话;创建一张学生成绩表 student_score 包含学号、学科、成绩。CREATE TABLE student_info(
ID INT,
NAME VARCHAR2(10),
sex VARCHAR2(4),
brithday DATE,
address VARCHAR2(50),
phone INT);
CREATE TABLE student_score(
ID INT,
subject VARCHAR2(20),
score NUMBER(4,1));
2、根据题目中的两张表,创建一张新表 test,包含以下信息:学号,姓名,学科,成绩
CREATE TABLE TEST AS SELECT a.id,a.name,b.subject,b.score FROM student_info a,student_score b;
3、将根据字符查询转换后结果,规则为:A 转换为 男,B 转换为 女,其他字符转换为‘未知’,试用一个 SQL 语句写出。INSERT INTO student_info VALUES (1100, aaa , A ,to_date( 1990/3/3 12:12:12 , yyyy/mm/dd hh34:mi:ss), asdg ,333);
SELECT DECODE(sex, A , 男,B , 女 , 其他) FROM student_info;
4、提取题目 1 表中,学生张三的各科成绩,需要以下信息:学号、姓名、学科、成绩,且按成绩的降序排序。SELECT a.id,a.name,b.subject,b.score FROM student_info a,student_score b WHERE a.id=b.id AND a.name= 张三 ORDER BY b.score DESC;
5、题目 1 表中,按学生总成绩由高到低排名,如果成绩相同则排名一样,输出字段为:排名、学号、姓名、总成绩。SELECT dense_rank() OVER(ORDER BY sum(b.score) DESC) dense_rank,a.id,a.name,sum(b.score) total FROM student_info a,student_score b WHERE a.id=b.id GROUP BY a.name,a.id
①ROW_NUMBER:Row_number 函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。
②DENSE_RANK:Dense_rank 函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。
③RANK:Rank 函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。http://www.cnblogs.com/wuyisky/archive/2010/02/24/oracle_rank.html
6. 题目 1 中,假设学科包含 语文,英语,数学,地理,请按以下格式输出学生的成绩
学号 姓名 语文 英语 数学 地理 总成绩
xxx xxx 70 70 70 70 280
SELECT A.ID,
A.NAME,
SUM(DECODE(B.SUBJECT, 语文 , SCORE, NULL)) AS 语文, -- 这里没有单引号
SUM(DECODE(B.SUBJECT, 数学 , SCORE, NULL)) AS 数学,
SUM(DECODE(B.SUBJECT, 英语 , SCORE, NULL)) AS 英语,
SUM(DECODE(B.SUBJECT, 地理 , SCORE, NULL)) AS 地理,
SUM(B.SCORE) TOTAL
FROM STUDENT_INFO A, STUDENT_SCORE B
WHERE A.ID = B.ID
GROUP BY A.NAME, A.ID;
http://blog.163.com/magicc_love/blog/static/185853662201371481247696/
7、题目 1 表中,求出各个学科的平均成绩,要求降序排序
SELECT b.subject,AVG(b.score) average FROM student_info a,student_score b WHERE a.id=b.id GROUP BY b.subject ORDER BY average DESC
8、下面两端代码有什么区别
select
CUST.*
,POS.bus_desc
from dw_ods.s00_sema_scmcustp CUST
left join dw_pdm.t99_pos_code POS
on CUST.cust_pos_code=POS.pos_code
and CUST.dw_etl_date= 2013-07-31 ::date;
符合这两个条件的数据会被汇总到起来
select
CUST.*
,POS.bus_desc
from dw_ods.s00_sema_scmcustp CUST
left join dw_pdm.t99_pos_code POS
on CUST.cust_pos_code=POS.pos_code
where CUST.dw_etl_date= 2013-07-31 ::date;
符合上面条件的数据被汇总起来,从其中取出符合下面数据的
9、有一张表 TEST,只有一个字段 COL,一共有 4 条记录,分别是 a,b,c,d,对应四个球队,现在四个球队进行比赛,用一条 sql 语句显示所有可能的比赛组合。select a.col,b.col from TEST a ,TEST b where a.col b.col;
10、有表 dm_acrm.test01, 数据结构为班级(class)、学号(id_number)、数学成绩(math)、英语成绩(English)表内数据如下: (备注:右下角打水印处被遮挡的是 C02)请汇总各班级的人数、数学平均成绩、英语平均成绩,并计算所有学生的人数、数学平均成绩、英语平均成绩(建议使用 rollup)。SELECT COUNT(id_number),AVG(match),AVG(english) FROM dm_acrm.test01 GROUP BY rollup(CLASS);
http://blog.itpub.net/519536/viewspace-610995/
11、有一张表 TEST, 有字段客户 ID(cust_id)和交易日期(txn_dte),表结构如下
Create test(
Cust_id numberic,
Txn_dte date
)distributed by(cust_id);
假设表中含有的数据量有千万级以上(无法通过表自关联),请生成一张表,里面存放客户 ID、交易日期以及上一次交易日期。distributed by 关键字查到是 GP 数据库相关的,以后遇到再说
已知 3 张表的关系模式:S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名
C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师
SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩
要求实现如下 5 个处理:1. 找出没有选修过“李明”老师讲授课程的所有学生姓名
2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名
4. 列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号
5. 列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩
1. SELECT SNAME
FROM S
WHERE SNAME != (SELECT A.SNAME
FROM S A, C B, SC C
WHERE A.SNO = C.SNO
AND B.CNO = C.CNO
AND B.CTEACHER = 李明
2. SELECT A.SNAME, AVG(C.SCGRADE)
FROM S A, C B, SC C
WHERE A.SNO = C.SNO
AND B.CNO = C.CNO
AND (SELECT COUNT(C.CNO)
FROM S A, C B, SC C
WHERE A.SNO = C.SNO
AND B.CNO = C.CNO
AND C.SCGRADE 60
GROUP BY A.SNAME) = 2
GROUP BY A.SNAME
3. SELECT A.SNAME
FROM S A, C B, SC C
WHERE A.SNO = C.SNO
AND B.CNO = C.CNO
AND (SELECT B.CNO
FROM S A, C B, SC C
WHERE A.SNO = C.SNO
AND B.CNO = C.CNO) = 1
AND (SELECT B.CNO
FROM S A, C B, SC C
WHERE A.SNO = C.SNO
AND B.CNO = C.CNO) = 2;
4. SELECT A.SNO
FROM S A, C B, SC C
WHERE A.SNO = C.SNO
AND B.CNO = C.CNO
AND (SELECT C.SCGRADE FROM SC)
(SELECT C.SCGRADE
FROM S A, C B, SC C
WHERE A.SNO = C.SNO
AND B.CNO = C.CNO
AND A.SNO = 2
AND B.CNO = 1)
5. SELECT A.SNO, C.SCGRADE
FROM S A, C B, SC C
WHERE A.SNO = C.SNO
AND B.CNO = C.CNO
AND A.SNO =
(SELECT A.SNO
FROM S A, C B, SC C
WHERE A.SNO = C.SNO
AND B.CNO = C.CNO
AND (SELECT C.SCGRADE FROM SC WHERE CNO = 1)
(SELECT C.SCGRADE FROM SC WHERE CNO = 2))
AND C.CNO IN (1, 2);
3、你了解 oracle 表分区吗?它有什么优缺点
4、oracle 表分区的分区类型有哪几种?它们的操作方法你知道吗?5、谈谈你对执行计划的理解,你主要看执行计划的哪部分?6、你对 sql 语句优化有何看法,能说出几种优化方法吗?7、oracle 优化器内部处理的表连接方式知道吗?有哪几种?8、会使用开窗函数吗?说一下你对开窗函数、聚合函数、分析函数的理解
9、游标的属性有哪几种?显式游标和隐式游标的使用方式分别是什么?10、plsql 块怎么捕捉到异常?你能说出几个常见的预定义异常吗?
11、说一下自定义异常如何在 plsql 块中实现?12、你了解视图吗?视图的优缺点是什么?13、假如让你开发一张报表,数据量比较小,你会怎样去实现它?让报表的数据展现出来?14、hash join 听说过吗?(回答 了解过 后,继续追问 还有几种连接方式你知道吗?说一下看看) (这个其实跟 7 是差不多的,哈希连接这个东西我面试 4 次被问了 3 次,印象深刻)15、你在学校里有没有接触过数据库?了解数据库的体系结构吗?16、你知道 SGA 和 PGA 分别是什么吗?17、有没有试着写过触发器?触发器的写法能大致描述一下吗?18、函数和存储过程有什么区别?19、对函数了解吗?说出几个常用的函数
20、(说出 SUM、COUNT、AVG 等函数后)知道 instr 和 substr 吗?他们的作用是什么?22、(面试官拿出个本子)写一下 decode 函数的基本结构(decode(valus,if1,then1,if2,then2……))23、OLAP 和 OLTP 分别指什么?24、谈谈你对索引的理解
25、delete 和 truncate 有什么区别
26、授权和撤销权限用的指令分别是?27、rowid 和 rownum 有什么不同?28、分页存储过程里的分页 sql 语句部分是怎么写的?能不能直接先 select * from table_name where rownum =6 然后再 rownum =10。(回答不能之后被追问 为什么?)29、oracle 作业中用到的包是?(追问 运行作业、删除作业用到的包分别是?)30、你的 oracle 的发展前景怎么看?31、如果有一天甲骨文公司倒闭了,你会做出什么选择?32、你知道 oracle 的最高认证是什么吗?(回答:OCM, 追问:你想到达这种高度吗?回答:想,追问:但是你知道通过 OCM 的人中国有多少吗?这样的高度是高级 DBA 的高度,有些人终其一生都达不到,在你被现实逼迫的时候,你会选择放弃吗?PS:这个考官当时很犀利,表情很严肃,内心很激动,一层一层追问下去,问得我都想哭了,小小应届生,为了梦想而出来,容易么。。。)
关于“oracle 中 sql 试题有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
正文完