sql查询选修了2以上课程的学生学号及选课门数。
时间: 2024-06-13 10:05:22 浏览: 526
以下是SQL查询选修了2以上课程的学生学号及选课门数的语句:
```sql
SELECT stu_id, COUNT(*) AS course_num
FROM sc
GROUP BY stu_id
HAVING COUNT(*) >= 2
ORDER BY stu_id ASC;
```
该语句首先从sc表中选取学生学号和课程号,然后按照学生学号进行分组,统计每个学生选修的课程门数,最后筛选出选修课程门数大于等于2的学生,并按照学生学号升序排序。
相关问题
使用标准SQL语句:查询选修课程超过 1 门的学生学号及选课门数(别名quantity)。
你可以使用以下的标准SQL语句来完成这个查询:
```sql
SELECT student_id, COUNT(course_id) AS quantity
FROM students_courses
GROUP BY student_id
HAVING COUNT(course_id) > 1;
```
这个查询做了以下几个步骤:
1. `SELECT student_id, COUNT(course_id)`:选择了学生的学号 (`student_id`) 和每个学生所选课程的数量 (`COUNT(course_id)`),其中 `COUNT` 是聚合函数,用于计算每个学生的课程数目。
2. `FROM students_courses`: 指定了数据表 `students_courses`,这是包含学生和他们选择课程信息的表。
3. `GROUP BY student_id`: 将结果按照学生ID分组,这样对于每个学生来说,计数都是独立进行的。
4. `HAVING COUNT(course_id) > 1`: 这个条件过滤出选修课程超过1门的学生,只返回满足这个条件的学生及其对应的课程数量。
写出创建满足下列要求的视图的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;
```
阅读全文