-- 25、查询各科成绩前三名的记录 -- mark -- 1.选出b表比a表成绩大的所有组 -- 2.选出比当前id成绩大的 小于三个的 SELECT a.s_id,a.c_id,a.s_score FROM score a LEFT JOIN score b ON a.c_id = b.c_id AND a.s_score < b.s_score GROUP BY a.s_id,a.c_id,a.s_score HAVING COUNT(b.s_id)<3 ORDER BY a.c_id,a.s_score DESC -- 26、查询每门课程被选修的学生数 SELECT c_id 课程号, COUNT(s_id) 学生人数 FROM score GROUP BY c_id -- 27、查询出只有两门课程的全部学生的学号和姓名 -- 解法一:表连接 SELECT s.s_id, s.s_name FROM student s LEFT JOIN score s1 ON s.s_id = s1.`s_id` GROUP BY s1.`s_id` HAVING COUNT(s1.`s_id`) = 2 -- 解法二:子查询 SELECT s_id,s_name FROM student WHERE s_id IN( SELECT s_id FROM score GROUP BY s_id HAVING COUNT(c_id)=2); -- 28、查询男生、女生人数 -- mark SELECT s_sex, COUNT(s_sex) AS 人数 FROM student GROUP BY s_sex -- 29、查询名字中含有"风"字的学生信息 SELECT s.* FROM student s WHERE s.s_name LIKE "%风%" -- 30、查询同名同性学生名单,并统计同名人数 -- mark 学号不同, 姓名、性别相同 SELECT a.s_name,a.s_sex,COUNT(*) FROM student a JOIN student b ON a.s_id != b.s_id AND a.s_name = b.s_name AND a.s_sex = b.s_sex GROUP BY a.s_name,a.s_sex
sql练习题(4)
猜你喜欢
转载自www.cnblogs.com/Aug-20/p/12052073.html
今日推荐
周排行