微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQlserver2005面试题

SELECT *FROM audition_student;--学生表

SELECT *FROM audition_scorse;--成绩表

SELECT *FROM audition_teacher;--教师表

SELECT *FROM audition_course;--课程表

 

--1.查询每个学生的平均成绩大于分的同学的学号和平均成绩;

select

    stuId,avg(scorse)'平均成绩'

from

    audition_scorse

    group by stuId

    having avg(scorse)>60;

--2.查询所有同学的学号、姓名、选课数、总成绩;

select

    st.stuId '学号',stuName'姓名',count(courId)'选课数',sum(scorse)'总分'

from

    audition_student st,audition_scorsesc

where

    st.stuId=sc.stuId

group by

    st.stuId,st.stuName

 

----------------------------------------------------------------------------

SELECT

    stu.stuid '学号', stu.stuname'姓名', s.coursenum'选课数', s.scorsenum'总分' 

FROM

    audition_student stu, 

    --算出选课数,总成绩 

    (SELECT

       sco.stuidstuid,COUNT(sco.courid) coursenum,SUM(sco.scorse)scorsenum  

    FROM

       audition_scorse sco

    GROUP BY

       sco.stuid) s

    WHERE

       stu.stuid=s.stuid

    ORDER BY

       stu.stuid;

--3查询的老师的个数;

select

    count(*)as 人数

from

    audition_teacher

where

    teaName like'_'

--4查询没学过李白老师的授课科目的同学的学号、姓名;

select

    st.stuId,stuName

from

    audition_student st,audition_teachert,audition_course c,audition_scorsesc

where

    t.teaName<>'李白'and

    t.teaId = c.teaId and

    c.courId = sc.courId and

    sc.stuId = st.stuId

group by

    st.stuId,stuName

--5通过教师表和课程表找到教师执教的课程,再通过课程表和成绩表找到学生号

    --不要学生号中的则为不学此教师的课程

--没看懂

--6查询学过“java”并且也学过“.NET”课程的同学的学号、姓名;

select

    st.stuId,stuName

from

    audition_student st,audition_coursec,audition_scorse sc

where

    c.courName='java'and

    exists(select* from audition_course cwherec.courName='.NET')and

    c.courId = sc.courId and

    sc.stuId = st.stuId

--7查询“java”课程比“NET”课程成绩高的所有学生的学号;

----------------这个作废----------------------------------------------

select sc.stuId

from audition_course c,audition_scorse sc

where c.courId=sc.courIdand

       (select scorsefromaudition_scorse sc,audition_course c

                     where

                     sc.courId=c.courIdand

                     c.courName='java')>

       (select scorsefromaudition_scorse sc,audition_course c

                     where

                     sc.courId=c.courIdand

                     c.courName='.net')

----------------------------这个--------------------------------------

select

    a.stuId

from

    (select stuId,scorsefrom audition_scorse wherecourId='1') a,

    (select stuId,scorsefrom audition_scorse wherecourId='4') b

where

    a.scorse>b.scorseand

    a.stuId=b.stuId

---------------------------改进---------------------------------------

select

    a.stuId

from

    (select stuId,scorsefrom audition_scorse sc,audition_coursecwhere c.courName='java'and c.courId=sc.courId) a,audition_coursecwhere c.courName='.net'and c.courId=sc.courId) b

where

    a.scorse>b.scorseand

    a.stuId=b.stuId

--8  查询所有课程成绩都小于分的同学的学号、姓名;

select

    st.stuId,audition_scorsesc

where

    st.stuId=sc.stuIdand

    st.stuId not in (select stuIdfrom audition_scorse wherescorse>90);

group by st.stuId,st.stuName

--9  查询没有学全所有课的同学的学号、姓名;

select

    st.stuId,st.stuName

from

    audition_student st,st.stuName

having

    count(courId)< (selectcount(courId)from audition_course);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐