A. sql面试题
1、首先,将三个表建立一个视图,可以直接在企业管理器里面建,也可以将下面的代码直接复制到查询分析器里面执行:
SELECT dbo.students.studentname, dbo.class.classname, dbo.score.course,
dbo.score.score
FROM dbo.class INNER JOIN
dbo.students ON dbo.class.classid = dbo.students.classid INNER JOIN
dbo.score ON dbo.students.studentid = dbo.score.studentid
2、然后,求 各科 班分数 最高的同学的名字,班级名称,课程名称,分数 ,代码如下:
select classname as 班级,course as 学科,max(score) as 最高分,(select top 1 studentname from scoreview where classname=x.classname and course=x.course order by score desc) as 最好成绩的学生 from scoreview x group by classname,course
------------
已经经过测试,你自己可以试试
B. sql语句 面试题
A.创建表格CODE省略
注明:学生表PK stu_id 课程表pk cos_id 分数表PK enrollment_id FK stu_id,cos_id
B.插入数据code省略
C.Query
select s.stu_id,stu_name,count(cos_id) from student s,enrollments e where s.stu_id = e.stu_id and e.grade>60 group by s.stu_id,stu_name;
select e.stu_id,s.stu_name,c.cos_name from student s,enrollments e,course c
where s.stu_id = e.stu_id
and e.cos_id = c.cos_id
and c.cos_name = 'CHINESE'
and s.stu_name like 'W%';
select stu_id,stu_name from (select e.stu_id,stu_name,cos_name from enrollments e,student s,course c
where s.stu_id = e.stu_id
and e.cos_id = c.cos_id
and c.cos_name IN ('CHINESE','MUSIC'))
group by stu_id,stu_name
having count(cos_name) = 2
select distinct e.cos_id,c.cos_name,count(e.stu_id) stu_count,count(e.stu_id)-NVL(A.FAIL,0) upscore,(count(e.stu_id)-NVL(A.FAIL,0))/count(e.stu_id) rate from
(select cos_id,count(stu_id) fail from enrollments where grade<60 group by cos_id) a,enrollments e,course c
where e.cos_id = a.cos_id(+)
and e.cos_id = c.cos_id
group by e.cos_id,NVL(a.fail,0),c.cos_name;
update student
set avg_grade =(select avg(grade) X from enrollments group by stu_id
having student.stu_id = enrollments.stu_id);
select stu_id,avg(grade) from
(select stu_id,cos_id,grade,row_number() over(partition by stu_id order by grade ) X from enrollments)
group by stu_id
having count(*)<=2
UNION
select A.stu_id,avg(A.grade)from
(select stu_id,cos_id,grade,row_number() over(partition by stu_id order by grade ) X from enrollments) A,
(select stu_id,count(*) c from
(select stu_id,cos_id,grade,row_number() over(partition by stu_id order by grade ) X from enrollments)
group by stu_id) B
where A.stu_id = B.stu_id
and A.x>1 and x<B.c
group by A.stu_id,b.c
_________________________________________________
环境:oracle 10g/TOAD 以上代码均通过测试,如有问题,请联系,谢谢
C. SQL面试题
select name
from
(
select name,sum(score) sc
from 表
group by name
) t1
where t1.sc>200
这样?
D. SQL语句的几种优化方法
1、尽可能建立索引,包括条件列,连接列,外键列等。
2、尽可能让where中的列顺序与复合索引的列顺序一致。
3、尽可能不要select *,而只列出自己需要的字段列表。
4、尽可能减少子查询的层数。
5、尽可能在子查询中进行数据筛选 。
E. 对sql进行优化的原则有哪些
太多了
最主要的几点:
1 减少返回不必要的数据
2 减少物理和逻辑读次数
3 减少计算次数
以上两个方面就优化了 内存 硬盘读写 CPU的消耗,
基于以上原则,你可以使查询跑的更快,数据表设计的更合理。
请采纳,如有疑问,及时沟通!
F. 如何进行SQL性能优化
这里分享下mysql优化的几种方法。
1、首先在打开的软件中,需要分别为每一个表创建 InnoDB FILE的文件。
G. 工作中常用的几种sql优化技巧
例如:
1、尽可能建立索引,包括条件列,连接列,外键列等。
2、尽可能让where中的列顺序与复合索引的列顺序一致。
3、尽可能不要select *,而只列出自己需要的字段列表。
4、尽可能减少子查询的层数。
5、尽可能在子查询中进行数据筛选 。
H. 关于Oracle PL/SQL优化,一面试题,求助
pl/sql是操作数据库的一种工具软件; oracle是一种大型数据库; oracle自带有sql/plus实际上可以满足需求,但是用着不是很主观,plsql提供良好的操作界面,使用起来就很方便,所以,基本上pl/sql已成为oracle必备的工具软件
I. 一个sql面试题
select t1.name,t2.name from department t1,department t2 where t1.name<t2.name;
********
测试log:
[TEST@ORA1] SQL>select t1.name,t2.name from department t1,department t2 where t1.name<t2.name;
N N
- -
a b
a c
a d
b c
b d
---
以上,希望对你有所帮助。