根据作业文件中的表和数据,创建表并完成以下查询:
1、查询”李”姓老师的数量
2、查询1990年出生的学生名单
3、查询男生、女生人数
4、查询学生的总成绩、平均成绩并进行排名
5、查询每门课程被选修的学生数
6、查询学过编号为”01”并且也学过编号为”02”的课程的同学的信息
7、查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩
8、检索至少选修两门课程的学生学号
9、统计各科成绩各分数段[100-85],[85-70],[70-60],[0-60]的人数
# 1. 查询"李"姓老师的数量SELECT count(1) FROM T WHERE t_name LIKE '李%';# 2. 查询1990年出生的学生名单SELECT * FROM S WHERE YEAR(s_birth) = 1990;# 3. 查询男生、女生人数SELECT s_gend, COUNT(1) FROM S GROUP BY s_gend;# 4. 查询学生的总成绩、平均成绩并进行排名SELECT a.s_id,@i: = @i + 1 as i,@k: = (case when @score = a.sum_score then @k else @i end) as rank1,@score:= a.sum_score as scorefrom (select s_id, s_name,SUM(s_score) as sum_scorefrom scoreGROUP BY s_idORDER BY sum_score DESC) a,(select @k: = 0, @i: = 0, @score: = 0) s;# 5. 查询每门课程被选修的学生数SELECT C.c_name, COUNT(S.s_id) FROM S join Score on S.s_id = Score.s_id join C on C.id = Score.c_id GROUP BY C.id;# 6. 查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息select a.* fromstudent a, score b, score cwhere a.s_id = b.s_id and a.s_id = c.s_id and b.c_id = '01' and c.c_id = '02';# 7. 查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩SELECT a.s_id, b.s_name, ROUND(AVG(s_score), 2) as `avg_score`from score aleft join student bon a.s_id = b.s_idGROUP BY s_idHaving avg_score > 85;# 8. 检索至少选修两门课程的学生学号select s_id, count(*) as sel from score GROUP BY s_id HAVING sel >= 2;# 9. 统计各科成绩各分数段[100-85],[85-70],[70-60],[0-60]的人数select c_id, sum(case when s_score > 85 and s_score <= 100 then 1 else 0 end) as `85-100`,, sum(case when s_score > 70 and s_score <= 85 then 1 else 0 end) as `70-85`,, sum(case when s_score > 60 and s_score <= 70 then 1 else 0 end) as `60-70`,, sum(case when s_score > 0 and s_score <= 60 then 1 else 0 end) as `0-60`,from scoreleft join Con C.id = score.c_idgroup by c_id;
