查询所教课程平均分大于30分的教师姓名、课程名、成绩、和课程的学习人数
时间: 2024-09-30 15:08:17 浏览: 55
查询所教课程平均分大于30分的教师信息,通常涉及到数据库操作,需要获取教师姓名、他们所教授的课程名称、该课程的成绩以及学生人数。这个任务假设我们有一个包含教师信息、课程信息及学生选课记录的数据表。
在这个场景中,假设我们有三个相关的数据表:
1. 教师表(Teacher),存储教师的基本信息,如`teacher_id`, `name`等;
2. 课程表(Course),存储课程信息,如`course_id`, `course_name`, `avg_score`(平均分)等;
3. 学生选课表(Enrollment),存储学生选课情况,如`student_id`, `course_id`, `score`(单次成绩)。
查询语句可能类似这样:
```sql
SELECT T.name AS teacher_name, C.course_name, AVG(E.score) AS avg_course_score, COUNT(DISTINCT E.student_id) AS student_count
FROM Teacher T
JOIN Course C ON T.teacher_id = C.teacher_id
JOIN Enrollment E ON C.course_id = E.course_id
GROUP BY T.name, C.course_name
HAVING AVG(E.score) > 30;
```
这个查询将返回所有平均分超过30分的课程及其相关信息,包括教师姓名、课程名、平均成绩以及参与这些课程的学生人数。
相关问题
1、建立数据库,以自己的名字+最后两位学号命名。库中有如下关系,关系模式如下: 教师(教师号,教师名,部门,奖金) 学生(学号,姓名,性别,年龄,系,奖学金) 课程(课程号,课程名,学分,教师号) 选课(学号,课程号,成绩) 创建上述表结构,并插入元组 2、请在“课程”表中插入('c8', 'java', 3 ,'0005') 请在“选课”中中插入('95003', 'c3') 3、查询刘老师所授课程的课程号、课程名及学生选课的名单(包括学号、姓名) 4、查询各学生的选课门数,要求查询学号、姓名和选课门数。 5、查询每个学生所修课程的总学分(成绩大于等于60才有学分) 6、查询选修了课程名为“数据库原理”的学生的学号,姓名和成绩 7、按性别统计男女生人数,显示性别和人数。查询获得奖学金的学生的学号和姓名,系。 8、查询平均成绩在85以上的学生的学号和姓名。
抱歉,我作为一个AI语言模型,并没有数据库查询的功能。不过,我可以告诉你一个基本的SQL查询语句,你可以在相关的数据库管理系统中使用它来查询:
1. 建立数据库并创建表:
```
CREATE DATABASE your_name+last_two_digits_of_student_number;
CREATE TABLE teacher (
teacher_id INT PRIMARY KEY,
teacher_name VARCHAR(50),
department VARCHAR(50),
bonus INT
);
CREATE TABLE student (
student_id INT PRIMARY KEY,
student_name VARCHAR(50),
gender VARCHAR(10),
age INT,
department VARCHAR(50),
scholarship INT
);
CREATE TABLE course (
course_id INT PRIMARY KEY,
course_name VARCHAR(50),
credit INT,
teacher_id INT,
FOREIGN KEY (teacher_id) REFERENCES teacher(teacher_id)
);
CREATE TABLE choose_course (
student_id INT,
course_id INT,
score INT,
PRIMARY KEY (student_id, course_id),
FOREIGN KEY (student_id) REFERENCES student(student_id),
FOREIGN KEY (course_id) REFERENCES course(course_id)
);
```
2. 插入元组:
```
INSERT INTO course (course_id, course_name, credit, teacher_id)
VALUES ('c8', 'java', 3 ,'0005');
INSERT INTO choose_course (student_id, course_id)
VALUES ('95003', 'c3');
```
3. 查询刘老师所授课程的课程号、课程名及学生选课的名单(包括学号、姓名):
```
SELECT course.course_id, course.course_name, student.student_id, student.student_name
FROM course
INNER JOIN teacher ON course.teacher_id = teacher.teacher_id
INNER JOIN choose_course ON course.course_id = choose_course.course_id
INNER JOIN student ON choose_course.student_id = student.student_id
WHERE teacher.teacher_name = '刘老师';
```
4. 查询各学生的选课门数,要求查询学号、姓名和选课门数:
```
SELECT student.student_id, student.student_name, COUNT(choose_course.course_id) AS courses_num
FROM student
LEFT JOIN choose_course ON student.student_id = choose_course.student_id
GROUP BY student.student_id;
```
5. 查询每个学生所修课程的总学分(成绩大于等于60才有学分):
```
SELECT student.student_id, student.student_name, SUM(course.credit) AS total_credits
FROM student
INNER JOIN choose_course ON student.student_id = choose_course.student_id
INNER JOIN course ON choose_course.course_id = course.course_id
WHERE choose_course.score >= 60
GROUP BY student.student_id;
```
6. 查询选修了课程名为“数据库原理”的学生的学号,姓名和成绩:
```
SELECT student.student_id, student.student_name, choose_course.score
FROM student
INNER JOIN choose_course ON student.student_id = choose_course.student_id
INNER JOIN course ON choose_course.course_id = course.course_id
WHERE course.course_name = '数据库原理';
```
7. 按性别统计男女生人数,显示性别和人数。查询获得奖学金的学生的学号和姓名,系:
```
-- 统计男女生人数
SELECT gender, COUNT(*) AS num
FROM student
GROUP BY gender;
-- 查询获得奖学金的学生的学号和姓名,系
SELECT student_id, student_name, department
FROM student
WHERE scholarship > 0;
```
8. 查询平均成绩在85以上的学生的学号和姓名:
```
SELECT student.student_id, student.student_name
FROM student
INNER JOIN choose_course ON student.student_id = choose_course.student_id
GROUP BY student.student_id
HAVING AVG(choose_course.score) >= 85;
```
写一份数据库原理的实验报告使用企业管理器建立学生选课数据库“StdentW101”,数据 库表为S(学生信息表)、C(课程信息表)、SC(选课信息 表):1.检索丁宝康老师所授课程的课程号和课程名 2.检索年龄大于19岁的男学生的学号和姓名。 3. 检索至少选修两门课程的学生学号。 4. 统计有学生选修的课程门数。 5. 求选修课程号为2的学生的平均年龄。 6.求马良老师所授课程的每门课程的学生平均成绩 7.统计每门课程的学生选修人数(超过1人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。 8. 检索姓名以王打头的所有学生的姓名和年龄。 9.在SC中检索成绩为空值的学生学号和课程号。SNO CNO GHADE 96001 1 92 96001 2 85 96001 3 88 96002 2 90 96002 3 80 96002 1 7.5 96003 95 96003 7 98 96004 1 92 96005 1 59 96005 6 84
实验目的:
1. 了解数据库的基本原理和操作;
2. 掌握企业管理器的使用方法;
3. 实现基本的SQL语句。
实验步骤:
1. 打开企业管理器,新建一个名为“StdentW101”的数据库,并在其中创建三个表格,分别为S(学生信息表)、C(课程信息表)和SC(选课信息表)。
2. 对于S表,创建以下字段:SNO(学号)、SNAME(姓名)、SEX(性别)、AGE(年龄)和BIRTHDAY(出生日期)。
3. 对于C表,创建以下字段:CNO(课程号)、CNAME(课程名称)和TNO(教师号)。
4. 对于SC表,创建以下字段:SNO(学号)、CNO(课程号)和GRADE(成绩)。
5. 向S表中插入学生信息,向C表中插入课程信息,向SC表中插入选课信息。
6. 使用SQL语句实现以下查询:
1. 检索丁宝康老师所授课程的课程号和课程名
```sql
SELECT C.CNO, C.CNAME
FROM C
WHERE C.TNO = (
SELECT T.TNO
FROM T
WHERE T.TNAME = '丁宝康'
)
```
2. 检索年龄大于19岁的男学生的学号和姓名。
```sql
SELECT S.SNO, S.SNAME
FROM S
WHERE S.AGE > 19 AND S.SEX = '男'
```
3. 检索至少选修两门课程的学生学号。
```sql
SELECT SC.SNO
FROM SC
GROUP BY SC.SNO
HAVING COUNT(*) >= 2
```
4. 统计有学生选修的课程门数。
```sql
SELECT COUNT(DISTINCT SC.CNO)
FROM SC
```
5. 求选修课程号为2的学生的平均年龄。
```sql
SELECT AVG(S.AGE)
FROM S
WHERE S.SNO IN (
SELECT SC.SNO
FROM SC
WHERE SC.CNO = 2
)
```
6. 求马良老师所授课程的每门课程的学生平均成绩
```sql
SELECT SC.CNO, AVG(SC.GRADE)
FROM SC, C
WHERE SC.CNO = C.CNO AND C.TNO = (
SELECT T.TNO
FROM T
WHERE T.TNAME = '马良'
)
GROUP BY SC.CNO
```
7. 统计每门课程的学生选修人数(超过1人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
```sql
SELECT SC.CNO, COUNT(DISTINCT SC.SNO) AS NUM
FROM SC
GROUP BY SC.CNO
HAVING COUNT(DISTINCT SC.SNO) > 1
ORDER BY NUM DESC, SC.CNO ASC
```
8. 检索姓名以王打头的所有学生的姓名和年龄。
```sql
SELECT S.SNAME, S.AGE
FROM S
WHERE S.SNAME LIKE '王%'
```
9. 在SC中检索成绩为空值的学生学号和课程号。
```sql
SELECT SC.SNO, SC.CNO
FROM SC
WHERE SC.GRADE IS NULL
```
实验结论:
通过企业管理器建立学生选课数据库“StdentW101”,并使用SQL语句实现了多种查询操作,实现了对数据库的基本操作和实际应用。
阅读全文