SELECT REA.STUDENTNO,AVG(scORE),REM.MX
FROM RESULT AS REA
INNERJOIN(SELECT STUDENTNO,MAX(scORE)AS MX
FROM RESULT
GROUPBY STUDENTNO
)AS REM
ON REA.STUDENTNO=REM.STUDENTNO
GROUPBY STUDENTNO;
三、查询姓张的每个学生的最低分大于60的学号、姓名
SELECT S.STUDENTNO,S.STUDENTNAME,MIN(SCORE)FROM STUDENT S
JOIN RESULT R
ON S.`studentno`=R.`studentno`WHERE S.`studentname`LIKE'张%'GROUPBY S.`studentno`HAVINGMIN(SCORE)>60
四、查询专业生日在“1988-1-1”后的学生姓名、专业名称
SELECT STUDENTNAME,MAJORNAME
FROM student S
INNERJOIN MAJOR M
ON S.`majorid`=M.MAJORID
WHERE DATEDIFF(borndate,'1988-1-1')>0
五、查询专业的男生人数和女生人数分别是多少
# 方法一SELECT MA.MAJORNAME,MSC.性别,MSC.人数
FROM MAJOR AS MA
INNERJOIN(SELECT MAJORID AS M,SEX AS 性别,COUNT(*)AS 人数
FROM STUDENT
GROUPBY MAJORID,SEX
)AS MSC
ON MA.MAJORID=MSC.M
# 方法二SELECTCOUNT(*) 个数,sex,MAJORID
FROM STUDENT
GROUPBY MAJORID,SEX
# 方法三SELECT MAJORID,(SELECTCOUNT(*)FROM student WHERE SEX='男'AND MAJORID=S.`majorid`)男,(SELECTCOUNT(*)FROM student WHERE SEX='女'AND MAJORID=S.`majorid`)女
FROM STUDENT s
GROUPBY MAJORID;
六、查询专业和张翠山一样的学生的最低分
#1.查询张翠山的专业编号SELECT MAJORID
FROM STUDENT
WHERE STUDENTNAME ='张翠山'#2.查询编号等于1的所有学生编号SELECT STUDENTNO
FROM STUDENT
WHERE MAJORID=(SELECT MAJORID
FROM STUDENT
WHERE STUDENTNAME ='张翠山')#3.查询最低分SELECTMIN(SCORE)FROM RESULT
WHERE STUDENTNO IN(SELECT STUDENTNO
FROM STUDENT
WHERE MAJORID=(SELECT MAJORID
FROM STUDENT
WHERE STUDENTNAME ='张翠山'))## 七、查询大于60分的学生的姓名、密码、专业名SELECT STUDENTNAME,loginpwd,MAJORNAME
FROM student S
INNERJOIN RESULT R ON S.STUDENTNO=R.STUDENTNO
INNERJOIN MAJOR M ON S.MAJORID =M.MAJORID
WHERE R.SCORE>60
SELECT STUDENTNAME,majorname,score
FROM student S
INNERJOIN RESULT R ON S.STUDENTNO=R.STUDENTNO
INNERJOIN MAJOR M ON S.MAJORID =M.MAJORID
十、查询哪个专业没有学生,分别用左连接和右连接实现
#左SELECT M.*FROM major M
LEFTJOIN STUDENT S
ON M.MAJORID=S.MAJORID
WHERE S.STUDENTNO ISNULL;#右SELECT M.*FROM STUDENT S
RIGHTJOIN MAJOR M
ON M.MAJORID=S.MAJORID
WHERE S.`studentno`ISNULL;
十一、查询没有成绩的学生人数
SELECTCOUNT(*)FROM student S
LEFTJOIN RESULT R
ON S.`studentno`=R.`studentno`WHERE R.`id`ISNULL;