用SQL命令查找每门课的选修人数及平均成绩,sc表中提供了选修课程的学生学号和学生的的课程成绩,course中提供了课程号,课程名,sc中的课程号是course表的外键。
时间: 2024-05-27 20:10:41 浏览: 131
好的,这个问题可以回答。SQL语句如下:
SELECT course.cname, COUNT(DISTINCT sc.sno) AS enrollments, AVG(sc.score) AS average_score
FROM course
LEFT JOIN sc ON course.cno = sc.cno
GROUP BY course.cno
这个语句会查询出每门课的课程名,选修人数以及平均成绩。leftJoin用于查询课程表中所有课程,即使这门课没有任何选修的学生。DISTINCT用于剔除重复的学号。GROUP BY语句用于根据课程编号分组,以聚合函数进行统计。
相关问题
查询每位学生选修课程的成绩高于其所选修课程的平均成绩的学生学号和课程号;SQL语句
可以使用嵌套查询来实现该功能。首先,查询每门课程的平均成绩,然后再查询每位学生选修课程的成绩是否高于该课程平均成绩,最后筛选出符合条件的学生学号和课程号即可。具体的SQL语句如下:
```
SELECT SC.student_id, SC.course_id
FROM score AS SC
WHERE SC.score > (
SELECT AVG(score)
FROM score
WHERE course_id = SC.course_id
)
```
写一份数据库原理的实验报告使用企业管理器建立学生选课数据库“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语句实现了多种查询操作,实现了对数据库的基本操作和实际应用。
阅读全文