一道招聘考试题,看看谁能全答对,赏100分!(100分)

  • 主题发起人 主题发起人 blad_pitt
  • 开始时间 开始时间
都没有人全答对?
1:根据学生名查出该学生所选的课程。
Select c.cName
From student s, course c ,sc
Where s.sName ='Puma' and sc.sn =s.sn and c.cn=sc.cn


2:根据课程名查出所有选这门课的学生。
Select s.sName
From student s, course c ,sc
Where c.cName ='Chemist' and sc.sn =s.sn and c.cn=sc.cn

3:选出选课最多的学生名。
Select st.sname
From student st ,(Select sc.sn ,count(*) as cc from sc Group by sc.sn) s ,
(Select top 1 sn,count(*) as cc From sc Group by sn) ssc
Where st.sn=s.sn and s.cc =ssc.cc

4:选出最多人报名的课程名。
Select cs.cName,s.cc
From course cs ,(Select sc.cn ,count(*) as cc From sc Group by sc.cn) s ,
(Select top 1 cn,count(*) as cc From sc Group by cn) ssc
Where cs.cn=s.cn and s.cc =ssc.cc

5:显示课程名的选课排行榜,按照报名的人数。
Select cs.cname,ssc.cc
From course cs,(Select cn,count(*) as cc From sc Group by cn) as ssc
Where cs.cn =ssc.cn
Order by ssc.cc desc

呵呵,肯定全对。比较好玩的题目!!
 
其实在group by后面加having子局就全搞定了,哪还用那么麻烦啊。
 
呵呵,好玩的题目!每个DFW都有一套自己的解决方案!
 
不知道上面的大大是否都测试过了?我试过上面的大大的方案,好像都有这样那样的问题啊?
不知道是不是我自己的问题?
问题1和2简单就不讨论了。。以下是我问题3的方案是根据Puma Wang兄改良来的
我第三个表是relation 只有sn和cn字段
select sname
from student ,(Select top 1 sn,count(*) as cc From relation Group by sn order by cc desc)as qq
where student.sn = qq.sn
 
楼上的注意了楼主好象在骗人啊!这道怎么看都不可能出现在招聘会上的,倒象是商业化的程序
 
boy1979 :
真的吗? 别的不说了,第三题,你试试? 出来大家讨论一下,看有什么好方法。
 
實現的話都能實現,但關鍵是實現后 程式的運行效率如何
 
fatlu : 到今天才看到你的第三题改良,
可是问题是:
如果选课最多的人中同时有不只一个人, 你的答案会只选出一个人来。
可是 要的所有的选课最多的人!
对 吧?


 
3.4都要用 exists运算符,写法类似
3:
select s.sname,sc1.c from (
select count(*) as c,sn from stdcr group by sn) sc1 ,students s
where sc1.sn=s.sn and not exists
(select * from (select count(*) as c,sn from stdcr group by sn) sc2 where
sc2.c>sc1.c)

4:
select cr.cname,sc1.c from (
select count(*) as c,clsno from stucr group by cn) sc1 ,course cr
where sc1.cn=cr.cn and not exists
(select * from (select count(*) as c,cn from stucr group by cn) sc2 where
sc2.c>sc1.c)

这样可以避免使用top,因为top不是标准的关系运算符
btw:在进行取第一条的操作时,用exists运算符基本上可以替代order by运算符
并且由于没有进行排序,效率会高一些

 
如果用三个字段,特别是后边的几个,查询的效率不敢保证,我认为可以再加两个字段,分别用来
保存学生当前选课数目,当前科目被选次数,即
序号 学生编号 科目编号 学生当前选课的数目 当前科目被选次数
ID SID CID MCNUM MSNUM

这样简便,所有的操作都应该很简单了,不知道大家的意见如何
 
后退
顶部