关于#SQL#的问题,如何解决?

创建一个视图,求各门课程的课程号、选课人数、平均分、最高分,并利用该视图查询 1 号课程的选课人数、平均分、最高分;

可以使用以下 SQL 语句创建一个视图,它会显示每门课程的课程号、选课人数、平均分和最高分:

CREATE VIEW course_info AS
SELECT course_id, COUNT(*) AS student_count, AVG(score) AS avg_score, MAX(score) AS max_score
FROM course_selection
GROUP BY course_id;

然后,你可以使用以下查询来获取 1 号课程的选课人数、平均分和最高分:

SELECT student_count, avg_score, max_score
FROM course_info
WHERE course_id = 1;

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/177922
  • 你也可以参考下这篇文章:Sql对表的操作--创建表、修改表名、修改表、修改表字段、
  • 除此之外, 这篇博客: 图解SQL的连接:左连接、右连接、全连接、内连接、自然连接中的 内连接和自然连接的区别? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 一、

    • 自然连接只能是同名属性的等值连接。
    • 内连接可以使用using或on子句来指定连接条件,连接条件中指出某两字段相等(可以不同名)。

            什么意思呢,就是说,如果现在地址表的id属性名改为了sid,而姓名表的id属性名仍然是id。如图,那么仍可以对两表进行内连接,只需要指定连接条件为 on student_name.id=student_adress.sid 就可以了。但是下面这两个表不能进行自然连接了,因为他们没有同名属性(id和sid不同名)。
    在这里插入图片描述
    二、

    • 自然连接返回的同名属性列只有一列
    • 内连接返回两列
      在这里插入图片描述

           

            如果此时你要进行select操作,注意!!!
            自然连接 select id from student_name natural join student_adress ;可以,因为自然连接的id只有一列。

            但是内连接 select id from student_name inner join student_adress on student_name.id=student_adress.id;会报错,因为内连接返回的id有两列!!!必须指明要选择的是来自哪个表的id。
            改成 select student_name.id from student_name inner join student_adress on student_name.id=student_adress.id;就可以了。

            可以参考SQL语句错误 Error Code: 1052. Column ‘id‘ in field list is ambiguous