sql统计每个学生的选课门数,列出学生的学号和选课门数。
时间: 2023-06-03 12:03:55 浏览: 3760
可以的,这是一个SQL统计问题。以下是一个例子:
```
SELECT student_id, COUNT(course_id)
FROM course_enrollment
GROUP BY student_id;
```
其中,`course_enrollment`是一个选课记录表,包含`student_id`和`course_id`两个字段。以上SQL语句会返回每个学生的选课门数,以及他们的学号。
相关问题
写出创建满足下列要求的视图的SQL 语句。 (1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。 (2)查询学生的学号、姓名、选修的课程名和考试成绩。 (3)统计每个学生的选课门数,列出学生的学号和选课门数。 (4)统计每个学生的修课总学分,列出学生的学号和选课门数。
假设我们有两个表,一个是`Students`,包含字段`StudentID`, `Name`, 和`Department`;另一个是`Courses`,包含字段`CourseID`, `CourseName`, `Credits`,还有一个关联学生和课程的表`Enrollments`,包含字段`StudentID`, `CourseID`和`Grade`。
以下是满足要求的SQL语句:
1. 查询学生的学号、姓名、所在系、课程号、课程名、课程学分:
```sql
SELECT s.StudentID, s.Name, c.Department, c.CourseID, c.CourseName, c.Credits
FROM Students s
JOIN Courses c ON s.Department = c.Department AND s.StudentID = Enrollments.StudentID;
```
2. 查询学生的学号、姓名、选修的课程名和考试成绩:
```sql
SELECT s.StudentID, s.Name, c.CourseName, e.Grade
FROM Students s
JOIN Enrollments e ON s.StudentID = e.StudentID
JOIN Courses c ON e.CourseID = c.CourseID;
```
3. 统计每个学生的选课门数:
```sql
SELECT s.StudentID, COUNT(DISTINCT e.CourseID) AS CourseCount
FROM Students s
JOIN Enrollments e ON s.StudentID = e.StudentID
GROUP BY s.StudentID;
```
4. 统计每个学生的修课总学分:
```sql
SELECT s.StudentID, SUM(c.Credits) AS TotalCredits
FROM Students s
JOIN Enrollments e ON s.StudentID = e.StudentID
JOIN Courses c ON e.CourseID = c.CourseID
GROUP BY s.StudentID;
```
写出创建满足下列要求的视图 (1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。 (2)查询学生的学号、姓名、选修的课程名和考试成绩。 (3)统计每个学生的选课门数,列出学生的学号和选课门数。 (4)统计每个学生的修课总学分,列出学生的学号和总学分(说明,考试成绩大于等于60才可获得此门课程的学分)。 2.修改第1题(4)定义的视图,使其查询每个学生的学号和总的选课门数。 3.写出实现下列操作的 SQL 语句,执行这些语句,并在SSMS工具中观察语句的执行结果。 (1)在Student表的Sde
pt列添加一个默认值为1的约束。(2)在Course表的Cname列中插入一条记录,值为'计算机网络',并返回插入的记录的主键值。 (3)删除选修了编号为001的课程的学生的选课记录。 (4)将选修了编号为002的课程,且考试成绩为70分的学生的成绩修改为80分。
答:
创建视图:
CREATE VIEW StudentCourseInfo AS
SELECT s.Sno, s.Sname, s.Sdept, sc.Cno, c.Cname, c.Ccredit
FROM Student s, SC sc, Course c
WHERE s.Sno=sc.Sno AND sc.Cno=c.Cno;
CREATE VIEW StudentScoreInfo AS
SELECT s.Sno, s.Sname, c.Cname, sc.Score
FROM Student s, SC sc, Course c
WHERE s.Sno=sc.Sno AND sc.Cno=c.Cno;
CREATE VIEW StudentCourseNum AS
SELECT Sno, COUNT(*) AS CourseNum
FROM SC
GROUP BY Sno;
CREATE VIEW StudentTotalCredit AS
SELECT Sno, SUM(c.Ccredit) AS TotalCredit
FROM Student s, SC sc, Course c
WHERE s.Sno=sc.Sno AND sc.Cno=c.Cno AND sc.Score>=60
GROUP BY s.Sno;
修改视图:
ALTER VIEW StudentTotalCredit
AS
SELECT Sno, COUNT(*) AS TotalCourseNum
FROM SC
GROUP BY Sno;
SQL语句:
(1) ALTER TABLE Student ADD CONSTRAINT DF_Sdept DEFAULT '1' FOR Sdept;
(2) INSERT INTO Course(Cname) VALUES ('计算机网络'); SELECT @@IDENTITY AS new_Cno;
(3) DELETE FROM SC WHERE Cno='001';
(4) UPDATE SC SET Score=80 WHERE Cno='002' AND Score=70;
阅读全文