查询选课大于3门,平均分大于79的软件211班的学生姓名和学号用sql语言写
时间: 2024-05-27 21:14:19 浏览: 56
SELECT name, student_id
FROM students
WHERE class = '软件211' AND
(SELECT COUNT(*) FROM courses WHERE courses.student_id = students.student_id) > 3 AND
(SELECT AVG(score) FROM courses WHERE courses.student_id = students.student_id) > 79;
相关问题
使用SQL做下列题目要(1)查询所有女生的平均年龄。 (2)查询卢老师所授课程的选课学生姓名。 (3)查询卢老师所授课程中,选课人数超过10人的课程信息。 (4)查询卢老师所授课程中,平均分大于85分的课程号,课程名称和平均分数。 (5)查询每个同学的平均分数,以平均分数降序排列。 (6)查询男生平均分超过85的学生姓名。 (7)查询与“张三”同性别的同学姓名(不含张三)。 (8)查询同时选修了操作系统和数据库原理的学生姓名和学号。 (9)查询有两门课程是90分以上的同学姓名和学号。 (10)查询最少选修了两门课程,且所有课程均为90分以上的学生姓名和学号。
1. 查询所有女生的平均年龄。
```
SELECT AVG(age) FROM students WHERE gender='女';
```
2. 查询卢老师所授课程的选课学生姓名。
```
SELECT s.name FROM students s JOIN course_selection cs ON s.id=cs.student_id JOIN courses c ON cs.course_id=c.id WHERE c.teacher='卢老师';
```
3. 查询卢老师所授课程中,选课人数超过10人的课程信息。
```
SELECT c.id, c.name, COUNT(cs.student_id) AS student_count FROM courses c JOIN course_selection cs ON c.id=cs.course_id WHERE c.teacher='卢老师' GROUP BY c.id, c.name HAVING student_count>10;
```
4. 查询卢老师所授课程中,平均分大于85分的课程号,课程名称和平均分数。
```
SELECT c.id, c.name, AVG(sc.score) AS avg_score FROM courses c JOIN course_selection cs ON c.id=cs.course_id JOIN score sc ON cs.student_id=sc.student_id AND cs.course_id=sc.course_id WHERE c.teacher='卢老师' GROUP BY c.id, c.name HAVING avg_score>85;
```
5. 查询每个同学的平均分数,以平均分数降序排列。
```
SELECT s.id, s.name, AVG(sc.score) AS avg_score FROM students s JOIN score sc ON s.id=sc.student_id GROUP BY s.id, s.name ORDER BY avg_score DESC;
```
6. 查询男生平均分超过85的学生姓名。
```
SELECT s.name FROM students s JOIN score sc ON s.id=sc.student_id WHERE s.gender='男' GROUP BY s.id, s.name HAVING AVG(sc.score)>85;
```
7. 查询与“张三”同性别的同学姓名(不含张三)。
```
SELECT name FROM students WHERE gender=(SELECT gender FROM students WHERE name='张三') AND name<>'张三';
```
8. 查询同时选修了操作系统和数据库原理的学生姓名和学号。
```
SELECT s.id, s.name FROM students s JOIN course_selection cs ON s.id=cs.student_id JOIN courses c ON cs.course_id=c.id WHERE c.name='操作系统' AND s.id IN (SELECT student_id FROM course_selection WHERE course_id=(SELECT id FROM courses WHERE name='数据库原理'));
```
9. 查询有两门课程是90分以上的同学姓名和学号。
```
SELECT s.id, s.name FROM students s JOIN score sc ON s.id=sc.student_id WHERE sc.score>=90 GROUP BY s.id, s.name HAVING COUNT(DISTINCT sc.course_id)>=2;
```
10. 查询最少选修了两门课程,且所有课程均为90分以上的学生姓名和学号。
```
SELECT s.id, s.name FROM students s JOIN score sc ON s.id=sc.student_id WHERE sc.score>=90 GROUP BY s.id, s.name HAVING COUNT(DISTINCT sc.course_id)>=2 AND COUNT(CASE WHEN sc.score<90 THEN 1 END)=0;
```
MySQL以数据库user_db及数据表student、teacher、class、course、sc为基础(11)查询信息技术学院的必修课和限选课的数量及平均学分; (12)查询每名学生的选课数量及平均成绩,按照平均成绩降序排列; (13)查询各门课程编号、选课人数及其及格率; (14)查询选课人数前五名的课程; (15)查询选修课程数最多和最少的学生的学号及选课数; 2、SQL子查询的应用; (1)查询信息技术学院年龄最大的学生的学号、姓名、性别; (2)查询每个院系年龄最大的学生的学号、姓名、性别、院系及年龄; (3)查询和“崔晓”一个院系的其他学生的学号、姓名、院系; (4)查询平均成绩在60分以上的课程及其平均成绩; (5)查询平均成绩大于“高莉”的平均成绩的学生学号、姓名及平均成绩; (6)查询课程的学分高于全体课程平均学分的课程编号、名称、学分及所属院系,查询结果按照学分降序排列; (7)查询至少有一名学生选修的所有课程的课程号及课程名;
11. 查询信息技术学院的必修课和限选课的数量及平均学分:
```
SELECT
SUM(CASE WHEN course_type = '必修' THEN 1 ELSE 0 END) AS required_course_count,
SUM(CASE WHEN course_type = '限选' THEN 1 ELSE 0 END) AS elective_course_count,
AVG(CASE WHEN course_type IN ('必修', '限选') THEN credit END) AS avg_credit
FROM
class
WHERE
department = '信息技术学院';
```
12. 查询每名学生的选课数量及平均成绩,按照平均成绩降序排列:
```
SELECT
sc.student_id,
COUNT(*) AS course_count,
AVG(score) AS avg_score
FROM
sc
JOIN
student ON student.id = sc.student_id
GROUP BY
sc.student_id
ORDER BY
avg_score DESC;
```
13. 查询各门课程编号、选课人数及其及格率:
```
SELECT
course_id,
COUNT(*) AS student_count,
SUM(CASE WHEN score >= 60 THEN 1 ELSE 0 END) / COUNT(*) AS pass_rate
FROM
sc
GROUP BY
course_id;
```
14. 查询选课人数前五名的课程:
```
SELECT
course_id,
COUNT(*) AS student_count
FROM
sc
GROUP BY
course_id
ORDER BY
student_count DESC
LIMIT 5;
```
15. 查询选修课程数最多和最少的学生的学号及选课数:
```
SELECT
student_id,
COUNT(*) AS course_count
FROM
sc
GROUP BY
student_id
HAVING
COUNT(*) = (SELECT MAX(cnt) FROM (SELECT COUNT(*) AS cnt FROM sc GROUP BY student_id) AS t)
OR COUNT(*) = (SELECT MIN(cnt) FROM (SELECT COUNT(*) AS cnt FROM sc GROUP BY student_id) AS t);
```
1. SQL子查询的应用:
(1) 查询信息技术学院年龄最大的学生的学号、姓名、性别:
```
SELECT
id, name, gender
FROM
student
WHERE
department = '信息技术学院' AND age = (SELECT MAX(age) FROM student WHERE department = '信息技术学院');
```
(2) 查询每个院系年龄最大的学生的学号、姓名、性别、院系及年龄:
```
SELECT
s.id, s.name, s.gender, s.age, s.department
FROM
student s
JOIN
(SELECT department, MAX(age) AS max_age FROM student GROUP BY department) t
ON
s.department = t.department AND s.age = t.max_age;
```
(3) 查询和“崔晓”一个院系的其他学生的学号、姓名、院系:
```
SELECT
id, name, department
FROM
student
WHERE
department = (SELECT department FROM student WHERE name = '崔晓') AND name != '崔晓';
```
(4) 查询平均成绩在60分以上的课程及其平均成绩:
```
SELECT
course_id,
AVG(score) AS avg_score
FROM
sc
WHERE
course_id IN (SELECT course_id FROM sc GROUP BY course_id HAVING AVG(score) >= 60)
GROUP BY
course_id;
```
(5) 查询平均成绩大于“高莉”的平均成绩的学生学号、姓名及平均成绩:
```
SELECT
id, name, AVG(score) AS avg_score
FROM
student
JOIN
sc ON student.id = sc.student_id
WHERE
AVG(score) > (SELECT AVG(score) FROM student JOIN sc ON student.id = sc.student_id WHERE name = '高莉')
GROUP BY
id, name;
```
(6) 查询课程的学分高于全体课程平均学分的课程编号、名称、学分及所属院系,查询结果按照学分降序排列:
```
SELECT
course.id, course.name, course.credit, course.department
FROM
course
WHERE
credit > (SELECT AVG(credit) FROM course)
ORDER BY
credit DESC;
```
(7) 查询至少有一名学生选修的所有课程的课程号及课程名:
```
SELECT
id, name
FROM
course
WHERE
id IN (SELECT DISTINCT course_id FROM sc);
```
阅读全文
相关推荐
















