(一)学生表(学生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 21:50:09 浏览: 107
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` 聚合函数来统计女生人数和女生平均分。
相关问题
1.学生表 Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 –2.课程表 Course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号 –3.教师表 Teacher(t_id,t_name) –教师编号,教师姓名 –4.成绩表 Score(s_id,c_id,s_score) –学生编号,课程编号,分数 sql 查询没有学全所有课程的同学的信息
可以使用以下的 SQL 查询语句来找出没有学全所有课程的同学的信息:
```
SELECT s_id, s_name
FROM Student
WHERE s_id NOT IN (
SELECT s_id
FROM Score
GROUP BY s_id
HAVING COUNT(DISTINCT c_id) = (
SELECT COUNT(*)
FROM Course
)
);
```
这个查询语句使用了子查询和聚合函数来找出没有学全所有课程的同学。具体来说,它首先使用子查询来找出学习了不同课程数量等于总课程数量的学生编号,然后在外部查询语句中使用 NOT IN 来找出不在这个列表中的学生信息,即没有学全所有课程的同学。
注意,这里的 COUNT(DISTINCT c_id) 表示课程数量,因为同一个学生可能会重复选修某个课程,所以需要使用 DISTINCT 来去重。而在外部查询语句中,使用了 SELECT COUNT(*) 来获取总课程数量。
功能测试笔试题 姓名: 日期: 预计完成时间15分钟 学生表 (学生id,姓名,性别,分数) student (s_id,name, sex,score)班级表 (班级id,班级名称) class(cid,cname)学生班级表(班级id,学生id) student_class (sid,cid) 1.查询男、女生人数以及各自的平均分 2.查询班级名称是“一班”并且得分等于 60,61,62的学生 3.将得分小于60分的分数改成60分
1. 查询男、女生人数以及各自的平均分:
SELECT sex, COUNT(*) AS count, AVG(score) AS avg_score FROM student GROUP BY sex;
2. 查询班级名称是“一班”并且得分等于 60,61,62的学生:
SELECT s_id, name, sex, score FROM student JOIN student_class ON student.s_id = student_class.sid JOIN class ON student_class.cid = class.cid WHERE class.cname = '一班' AND score IN (60, 61, 62);
3. 将得分小于60分的分数改成60分:
UPDATE student SET score = 60 WHERE score < 60;
阅读全文