【MySQL】聚合函数、group by、having、order by等语句的应用

27.查找KC表中所有学生选过的课程名

SELECT DISTINCT kc.课程名 FROM kc JOIN xs_kc ON kc.课程号=xs_kc.课程号;

28. 查找所有学生情况及他们选修的课程号,若学生未选修任何课,也要包括其情况。

SELECT DISTINCT * FROM xs JOIN xs_kc ON xs_kc.学号=xs.学号;


29.查找被选修了的课程的选修情况和所有开设的课程名。

SELECT DISTINCT * FROM kc LEFT JOIN xs_KC ON(kc.课程号=xs_kc.课程号);


30.查找选修了课程号为206课程的学生的姓名、学号。

SELECT xs.姓名,xs.学号,xs_kc.课程号 FROM xs JOIN xs_kc ON xs.学号=xs_kc.学号 
AND xs_kc.课程号='206';


31查找未选修离散数学的学生的姓名、学号和专业名。
 

SELECT DISTINCT xs.姓名,xs.学号,xs.专业名 FROM xs,kc JOIN xs_kc ON kc.课程号=xs_kc.课程号 where kc.课程名!="离散数学";


32查找选修了离散数学的学生学号。

SELECT DISTINCT xs.学号 FROM xs,kc JOIN xs_kc ON kc.课程号=xs_kc.课程号 where kc.课程名="离散数学";


33查找XS表中比所有计算机系的学生年龄都大的学生的学号、姓名、专业名和出生日期。

SELECT DISTINCT xs.姓名,学号,专业名,出生时间 FROM xs WHERE 出生时间< ALL (SELECT 出生时间 FROM xs WHERE 专业名='计算机');


34查找XS_KC表中课程号206的成绩不低于课程号101的最低成绩的学生的学号。

SELECT xs.学号 FROM xs JOIN xs_kc ON xs.学号=xs_kc.学号 WHERE xs_kc.课程号='206'

AND xs_kc.成绩> (SELECT MIN(成绩) FROM xs_kc WHERE xs_kc.课程号='101');

35查找选修206号课程的学生姓名。

SELECT xs.姓名 FROM xs JOIN xs_kc ON xs.学号=xs_kc.学号 WHERE xs_kc.课程号='206';


36将XS中各专业名输出。

SELECT DISTINCT xs.专业名 FROM xs;


37求XS中各专业的学生数。

SELECT xs.专业名,COUNT(专业名) AS 各专业学生数 FROM xs GROUP BY 专业名;


38求被选修的各门课程的平均成绩和选修该课程的人数。
SELECT 课程号,AVG(成绩) AS 平均成绩,COUNT(*) AS 选课人数 FROM xs_kc GROUP BY 课程号;


39在XSCJ数据库上产生一个结果集,包括每个专业的男生人数、女生人数、总人数,以及学生总人数。

SELECT 专业名,性别,COUNT(*) AS 人数 FROM xs GROUP BY 专业名,性别 WITH rollup;


40查找平均成绩在85分以上的学生的学号和平均成绩。
 

SELECT 学号,AVG(成绩) AS 平均成绩 FROM xs_kc GROUP BY 学号 HAVING AVG(成绩)>85;


41) 查找选修课程超过2门且成绩都在80分以上的学生的学号。

SELECT 学号 FROM xs_kc GROUP BY 学号 HAVING AVG(成绩)>80 AND COUNT(课程号)>2;


42将通信工程专业的学生按出生日期先后排序。

SELECT * FROM xs  WHERE 专业名='通信工程' ORDER BY 出生时间;


43将计算机专业学生的“计算机基础”课程成绩按降序排列。

SELECT DISTINCT xs.姓名,xs.专业名,xs_kc.成绩 AS 计算机基础课程成绩 FROM xs,xs_kc 
JOIN kc ON xs_kc.课程号=kc.课程号 WHERE kc.课程名='计算机基础' 
AND xs.专业名='计算机' AND xs.学号=xs_kc.学号 ORDER BY 成绩 DESC ;


44将计算机专业学生按其平均成绩排列。

SELECT xs.姓名,xs.学号,AVG(xs_kc.成绩) AS 平均成绩 FROM xs 
JOIN xs_kc ON xs.学号=xs_kc.学号 AND xs.专业名='计算机' 
GROUP BY 学号 ORDER BY AVG(成绩) DESC;


45查找XS表中学号最靠前的5位学生的信息。

SELECT * FROM xs ORDER BY 学号 limit 5;


46.查找XS表中从第4位同学开始的5位学生的信息。

SELECT * FROM xs limit 3,5;

猜你喜欢

转载自blog.csdn.net/m0_65198365/article/details/123859723