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] 举报,一经查实,本站将立刻删除。