mysql 创建1个视图,名称自定,要求列出平均成绩小于 70 分的学生姓名和平均成绩;
时间: 2024-03-20 13:42:00 浏览: 21
好的,以下是创建视图的SQL语句,该视图列出平均成绩小于70分的学生姓名和平均成绩:
```sql
CREATE VIEW avg_score_view AS
SELECT student.name, AVG(sc.score) AS avg_score
FROM student, sc
WHERE student.id = sc.student_id
GROUP BY student.name
HAVING avg_score < 70;
```
该语句创建了一个名为`avg_score_view`的视图,该视图通过连接`student`表和`sc`表,并使用`AVG`函数计算每个学生的平均成绩。然后,使用`GROUP BY`子句按学生姓名分组,并使用`HAVING`子句筛选出平均成绩小于70分的学生姓名和平均成绩。你可以自定义视图名称,将其替换掉上述语句中的`avg_score_view`即可。
希望我的回答对你有所帮助。如果你还有其他问题,请继续提问。
相关问题
利用mysql创建学生表, 查询每个学生的平均成绩 显示效果 学生编号 学生姓名 平均成绩
好的,那我们首先需要在MySQL中创建一个学生表,并且在该表中插入学生的成绩记录和学生信息。以下是一个示例的MySQL表的创建语句:
```
CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(50),
score INT
);
INSERT INTO student VALUES
(1, '张三', 80),
(1, '张三', 90),
(1, '张三', 70),
(2, '李四', 85),
(2, '李四', 95),
(2, '李四', 75),
(3, '王五', 90),
(3, '王五', 85),
(3, '王五', 95);
```
以上是一个简单的学生表的创建和数据插入的示例。接下来,我们可以使用下面的SQL语句查询每个学生的平均成绩,并且按照学生编号升序排列:
```
SELECT id, name, AVG(score) AS average_score FROM student GROUP BY id ORDER BY id ASC;
```
执行上面的SQL语句后,你会得到如下的结果:
```
+----+--------+---------------+
| id | name | average_score |
+----+--------+---------------+
| 1 | 张三 | 80.0000 |
| 2 | 李四 | 85.0000 |
| 3 | 王五 | 90.0000 |
+----+--------+---------------+
```
以上结果展示了每个学生的编号、姓名和平均成绩。
mysql利用stud_view视图,查看平均成绩在80分以上的学生姓名。
可以使用以下 SQL 语句,在 stud_view 视图中查询平均成绩在80分以上的学生姓名:
```sql
SELECT Name
FROM stud_view
GROUP BY Name
HAVING AVG(Score) >= 80;
```
以上 SQL 语句中,使用了 GROUP BY 子句按照学生姓名分组,然后使用 HAVING 子句筛选出平均成绩大于等于80分的学生。最终查询结果将返回符合条件的学生姓名。