mysql查询
-- 10.21 SQL练习
-- 表结构和数据参见4个.sql文件
-- 1、查询“c001”课程比“c002”课程成绩高的所有学生的学号;
select s1.sid from (
SELECT sid,score from sc where cid='001') s1
join (
SELECT sid,score from sc where cid='002') s2
on s1.sid=s2.sid
where s1.score > s2.score;
-- 2、查询平均成绩大于60 分的同学的学号和平均成绩;
SELECT sc.sid, AVG(sc.score) FROM sc
GROUP BY sc.sid
HAVING AVG(sc.score) >60;
-- 3、查询所有同学的学号、姓名、选课数、总成绩;
SELECT sc.sid ,
student.sname AS 姓名,
COUNT(sc.sid) AS 选课数,
SUM(sc.score) AS 总成绩
FROM sc JOIN student
ON sc.sid=student.sid
GROUP BY sc.sid;
-- 4、查询姓“刘”的老师的个数;
SELECT COUNT(tName) FROM teacher
WHERE tName LIKE "%李%";
-- 5、查询没学过“李老师”课的同学的学号、姓名;
-- 6、查询学过“c001”并且也学过编号“c002”课程的同学的学号、姓名;
-- 7、查询学过“李老师”所教的所有课的同学的学号、姓名;
-- 8、查询课程编号“c002”的成绩比课程编号“c001”课程低的所有同学的学号、姓名;
-- 9、查询所有课程成绩小于60 分的同学的学号、姓名;
-- 10、查询没有学全所有课的同学的学号、姓名;
-- 10.21 SQL练习
-- 表结构和数据参见4个.sql文件
-- 1、查询“c001”课程比“c002”课程成绩高的所有学生的学号;
SELECT
s1.sid
FROM
( SELECT sid, score FROM sc WHERE cid = '001' ) s1
JOIN ( SELECT sid, score FROM sc WHERE cid = '002' ) s2 ON s1.sid = s2.sid
WHERE
s1.score > s2.score;-- 2、查询平均成绩大于60 分的同学的学号和平均成绩
SELECT
sc.sid,
AVG( sc.score )
FROM
sc
GROUP BY
sc.sid
HAVING
AVG( sc.score ) > 60;-- 3、查询所有同学的学号、姓名、选课数、总成绩;
SELECT
sc.sid,
student.sname AS 姓名,
COUNT( sc.sid ) AS 选课数,
SUM( sc.score ) AS 总成绩
FROM
sc
JOIN student ON sc.sid = student.sid
GROUP BY
sc.sid;-- 4、查询姓“刘”的老师的个数;
SELECT
COUNT( tName )
FROM
teacher
WHERE
tName LIKE "%李%";-- 5、查询没学过“李老师”课的同学的学号、姓名;
#查询李老师的tid是多少
-- SELECT teacher.tid FROM teacher
-- WHERE teacher.tName="李老师";
#查询李老师的课有哪些
SELECT
course.cid
FROM
course
RIGHT JOIN ( SELECT teacher.tid FROM teacher WHERE teacher.tName = "李老师" ) ON teacher.tid = course.tid;--