初学者,简单的数据库sql语句,看看对不对

5 . 计算每个班级数据库课程的GPA。
选择班级,avg(grade)作为平均成绩 来自学生,课程选择 其中课程选择.课程编号(从课程名称='数据库'的课程中选择课程编号.课程编号) 而Student.学生ID=选课.学生ID 按类分组
问题: 如果只有一个课程号,则 in 子查询会扫描整个表。
当班级人数较多时,效率较低。
正确的写法: 连接写入更高效 选择班级,avg(grade) 作为平均成绩 来自学生 加入课程选择Student.student ID=课程选择.学生ID 选择课程时加入课程。
课程号=课程号.课程 其中课程名称 = '数据库' 按班级分组
6 查找每个学生当前修读的学分总数。
选择姓名、金额(学分)作为总学分 来自学生、课程 其中student.student id=选课.student id 选课.课程号=课程.课程号 按名称分组
问题: 未能链接到课程选择表将导致重复计算。
正确的写法: 三表关联 选择姓名、金额(学分)作为总学分 来自学生 加入课程选择Student.student ID=课程选择.学生ID 选择课程时加入课程。
课程号=课程号.课程 按名称分组
7 .请求每个学生的 GPA 选择 name, avg(score) 作为平均分 来自学生,课程选择 其中student.student id=选课.student id 按名称分组
问题: 重复的名称将导致错误分类。
正确的写法: 添加学号分组 选择学号、姓名、平均分(分数)作为 GPA 来自学生 加入课程选择Student.student ID=课程选择.学生ID 按学生 ID、姓名分组
8 索取学生证、姓名、课程名称和成绩 select 学生.学号,学生.姓名,课程.课程名称,选课.年级 来自学生、课程、选课 哪里学生.学号=选课.学号 且选课.课程号=课程.课程号
问题: 子查询会减慢速度。
正确的写法: 直接加入 (写法同上)
你觉得这个子查询优化思路怎么样?

如何在sqlserver中使用AVG函数统计数据平均值

上周在学习SQL Server时,我第一次创建了一个名为ScoresTemp的临时表来演示AVG函数的使用。
该表旨在存储课程(例如数学)的成绩。

sql 创建表 ScoresTemp ( 学生 ID INT, 数学分数 DECIMAL(5 , 2 ) );
然后我将几个学生的成绩插入到临时表中,如下所示:
sql 插入 ScoresTemp(学生 ID、数学分数)值 (1 , 8 5 .5 ), (2 , 9 2 .0), (3 , 7 8 .0), (4 , 8 8 .5 ), (5 , 9 1 .0);
插入数据后,查询临时表中的数据,看看效果:
sql 从 ScoresTemp 中选择;
接下来,我使用 AVG 函数计算平均数学成绩。
SQL 语句如下所示:
sql 从 ScoresTemp 中选择 AVG(MathScore) 作为 AverageMathScore;
最后我想用AVG函数计算每个学生的GPA,这就需要使用GROUP BY:
sql语句 SELECT StudentID, AVG(MathScore) AS AverageScore FROM ScoresTemp GROUP BY StudentID;
这样我就可以看到每个学生的平均数学成绩。
我不确定这部分的确切效果,因为我没有真正的 SQL Server 环境来运行这些语句。
由你决定。