以下为某公司的数据库笔试题及个人整理的答案,小伙伴们有更好的答案欢迎指教!
数据表
Student(S#,Sname) 10000条记录
Cource(C#,Cname,T#) 9条记录
SC(S#,C#,Score) 89991条记录
Teacher(T#,Tname) 3条记录
题目并没有指定表中有多少数据,记录是我自己模拟的。
试题
1、选择课程001的成绩大于课程002的成绩的学生ID;
SELECT sc1.`S#` from sc sc1 WHERE sc1.`C#`=1 AND
EXISTS
(SELECT sc1.`S#` from sc sc2 WHERE sc2.`C#`=2 and sc1.`S#`=sc2.`S#` AND sc1.Score > sc2.Score
)
上面的用法性能太差了。
[SQL] SELECT sc1.`S#` from sc sc1, sc sc2 WHERE sc1.`S#`=sc2.`S#` and sc1.`C#`=1 AND sc2.`C#`=2 AND sc1.Score > sc2.Score
时间: 14.913ms
2、查询所有平均成绩大于60分的学生ID,学生姓名;
select s.`S#`,Sname,av