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

  • 主题发起人 blad_pitt
  • 开始时间
B

blad_pitt

Unregistered / Unconfirmed
GUEST, unregistred user!
现有两个表,student和course,student表中有学生编号sn字段(主键),学生名sname字段,course中有课程代号cn字段(主键)和课程名cname字段,现在要建一个表显示学生的选课情况,还要完成以下查询:
1:根据学生名查出该学生所选的课程。
2:根据课程名查出所有选这门课的学生。
3:选出选课最多的学生名。
4:选出最多人报名的课程名。
5:显示课程名的选课排行榜,按照报名的人数。
以上5条要求用sql语句写出。
 
表 id ,sn,cn
Jiu可以,
 
这个问题太简单了,给两个表建一个关联不就行了。
 
序号 学生编号 课程编号
1 1 1
2 1 2
3 1 3
4 2 1
5 2 4
6 2 5
......
怎么样?:)
 
重要的是五个SQL!
 
后三条用一条SQL写难些
 
表register
sn
cn

1.select cname from course, student, register
where register.sn=student.sn and register.cn=course.cn
and sname='学生名变量'

2.select sname from course, student, register
where register.sn=student.sn and register.cn=course.cn
and cname='课程名变量'

其他还没想到,是否必须用一句SQL?
 
楼上的兄弟和我想法一样,
只不过需要一建表的SQL
Create table SC( SN INT NOT NULL,CN INT NOT NULL)
如果后三条需一条sql.我也还没想到
 
新建立表StdCr结构: 编号字段No, 学生编号sn字段, 课程代号cn字段
1.Select course.cname
From StdCr,Student,Course
Where (Course.cn=StdCr.cn)and(StdCr.sn=Student.sn)and(Student.sname=SpeName))
2.Select Student.sname
From StdCr,Student,Course
Where (Student.sn=StdCr.cn)and(StdCr.cn=Course.cn)and(StdCr.cname=SpeName)
.......
下面的语句要group by这些东西,有些记不得,再说
 
先建立表Relation:sn,cn和楼上提到的一样,且表中保存着学生选课的记录
如 sn cn
1 2
2 1
3 5
4 3

下面用S表示Student, C表示Course, R表示Relation
1:根据学生名查出该学生所选的课程。
select C.Name From C where C.cn in( Select R.cn From S, R where R.sn in(select S.sn from S where S.Name = 学生名变量))
2:根据课程名查出所有选这门课的学生。
select S.Name From S where S.sn in( Select R.sn From C, R where R.cn in(select C.cn from C where C.Name = 课程名变量))
3:选出选课最多的学生名。
Select S.Name From S Where S.sn in (select R.sn,Max(Count(*)) From R Group by R.sn)
4:选出最多人报名的课程名。
Select C.Name From C Where C.cn in (select R.cn,Max(Count(*)) From R Group by R.sn)
5:显示课程名的选课排行榜,按照报名的人数。
select R.cn,C.Name, Count(*) AS StudentCount From R, C where R.cn = C.cn Group by R.cn Order by StudentCount
 
max(count(*))?
哪个DB支持?
 
这两个表的设计有问题,还需要加上一个表,叫选课表:字段:sn,cn,score
 
到现在为止没有一个完全正确的,看来大家也都进不了这家公司了。
 
现有两个表,student和course,student表中有学生编号sn字段(主键),学生名sname字段,course中有课程代号cn字段(主键)和课程名cname字段,现在要建一个表显示学生的选课情况,还要完成以下查询:
1:根据学生名查出该学生所选的课程。
2:根据课程名查出所有选这门课的学生。
3:选出选课最多的学生名。
4:选出最多人报名的课程名。
5:显示课程名的选课排行榜,按照报名的人数。
以上5条要求用sql语句写出。

建一个学生,课程对照表就行了
 
随便找本数据库理论的书,估计都会有这个经典的“学生--课程--成绩”库的。
然后由这个库表结构衍生了很多SQL语句。
大概有不少DFW们最初的SQL学习都是在这个3个表之间完成的吧!
向这个“经典”的东东表示怀念和致敬!!
 
现有两个表,student和course,student表中有学生编号sn字段(主键),学生名sname字段,course中有课程代号cn字段(主键)和课程名cname字段,现在要建一个表显示学生的选课情况,还要完成以下查询:
1:根据学生名查出该学生所选的课程。
2:根据课程名查出所有选这门课的学生。
3:选出选课最多的学生名。
4:选出最多人报名的课程名。
5:显示课程名的选课排行榜,按照报名的人数。
以上5条要求用sql语句写出。

建一个学生,课程对照表就行了s_t表
sn cn 关键字为sn+cn
1.select t3.cname from student t1,course t2,s_t t3 where
t1.sn=t2.sn and t2.cn=t3.cn and t1.sname=@学生名
2.select t1.sname from student t1,course t2,s_t t3 where
t1.sn=t2.sn and t2.cn=t3.cn and t3.cname=@课程名
3。select t1.sname from
(select a.sn,max(a.maxcourse) from
(select t3.sn,count(t3.cn) as maxcourse from s_t t3 group by t3.sn) a
group by a.sn) b ,student t1 where t1.sn=b.sn
4. select t2.cname from
(select a.cn,max(a.maxstudent) from
(select t3.cn,count(t3.sn) as maxstudent from s_t t3 group by t3.cn) a
group by a.sn) b ,course t2 where t2.cn=b.cn
5.select t2.cname,a.maxstudent as 人数 from
(select t3.cn,count(t3.sn) as maxstudent from s_t t3 group by t3.cn) a,course t2
order by a.maxstudent
 
建表:
Create table SC( sn INT NOT NULL,cn INT NOT NULL)

1:根据学生名查出该学生所选的课程
select course.cname from course
left join SC on course.cn=SC.cn
left join student on SC.sn=Student.sn
where sname='学生名'

2:根据课程名查出所有选这门课的学生
select student.sname from student
left join SC on student.sn=SC.sn
left join course on Sc.cn=course.cn
where course.cname='课程名'

3:选出选课最多的学生名
select max(count(SC.sn)) , student.sname from student
left join SC on student.sn=SC.sn
Group By student.sname,SC.sn

4:选出最多人报名的课程名
select max(count(SC.cn)) , course.cname from course
left join SC on course.cn=SC.cn
Group By Course.cname,SC.cn

5:显示课程名的选课排行榜,按照报名的人数
select course.cname , count(SC.cn) as n from Course
left join SC on course.cn=SC.cn
Group By course.cname,SC.cn
Order By n DECE

完全正确,加100分,哈哈!!
 
max(count(sn))可行吗?
 
select course.cname from course,student where studnet.sn=course.cn and student.name='查询名称'
select count(*) from student where student.sn=course.cn and course.cname='课程名'
第三和第四麻烦不写。
slect distinct cname,count(*) as studentcount from course order by studentcount group by cname
 
顶部