在MySQL Workbench/Navicat Premium/SQLyog或命令行环境下,创建学生选课成绩视图score_view,显示选修3学分(含)学生学号、姓名、课程号、课程名、总成绩。其中,总成绩按照——平时成绩*平时成绩比重+考试成绩*(1-平时成绩比重)公式计算
时间: 2024-11-24 11:42:59 浏览: 62
在MySQL Workbench、Navicat Premium或SQLyog环境中,你可以通过以下SQL语句来创建名为`score_view`的视图,该视图将显示满足条件的学生信息:
```sql
CREATE VIEW score_view AS
SELECT s.student_id, s.name AS 姓名, c.course_code AS 课程号, c.course_name AS 课程名,
(s.placement_score * p.bearing + s.exam_score * (1 - p.bearing)) AS 总成绩
FROM students s
JOIN courses c ON s.course_id = c.course_id
JOIN course_grades sg ON s.student_id = sg.student_id AND c.course_id = sg.course_id
JOIN (SELECT course_id, bearing AS 平时成绩比重 FROM course_weights WHERE credit_hours >= 3) w ON c.course_id = w.course_id
WHERE sg.credit_hours = 3;
```
在这个查询中,我们做了以下假设:
- `students`表包含学生信息(如student_id, name)
- `courses`表存储课程数据(course_id, course_name, credit_hours)
- `course_grades`表记录学生的分数(student_id, course_id, placement_score, exam_score)
- `course_weights`表定义每个课程的平时成绩比重,根据信用小时数(credit_hours)筛选出3学分及以上的课程
这个视图计算总成绩时,`placement_score`代表平时成绩,`exam_score`代表考试成绩,`bearing`表示平时成绩的比重。
阅读全文