(一)学生表(学生id,姓名,性别,分数)student (s_id,name,sex,score);班级表(班级id,班级名称) class (c id,c name) ; 学生班级表(班级id,学生id) student class(s id,c_id); [以下两小题任选一题即可] 1)查询一班得分在80分以上的学生; 2)查询所有班级的名称,和所有班中女生人数和女生的平均分
时间: 2024-03-12 22:50:09 浏览: 91
详解MySql基本查询、连接查询、子查询、正则表达查询
1) 查询一班得分在80分以上的学生:
```
SELECT s.name, s.score
FROM student s
INNER JOIN student_class sc ON s.s_id = sc.s_id
WHERE sc.c_id = 1 AND s.score >= 80;
```
其中,`1` 表示班级的 id,可以根据实际情况修改。
2) 查询所有班级的名称,和所有班中女生人数和女生的平均分:
```
SELECT c.c_name, COUNT(CASE WHEN s.sex = '女' THEN 1 END) AS female_count, AVG(CASE WHEN s.sex = '女' THEN s.score END) AS female_avg
FROM class c
LEFT JOIN student_class sc ON c.c_id = sc.c_id
LEFT JOIN student s ON sc.s_id = s.s_id
GROUP BY c.c_id;
```
该查询使用了左连接(`LEFT JOIN`)来保证查询出所有班级的信息,即使该班级没有学生。同时,使用了 `COUNT` 和 `AVG` 聚合函数来统计女生人数和女生平均分。
阅读全文