0

计算表中学生的 SGPA,公式为特定学生在特定学期注册的每门课程的 3*gradepoint 总和除以课程数。

我有一个名为 All_Registration 的表,其中包含如下字段和数据

╔════════════╦═════════════╦════════╦════════════╗
║ STUDENT_ID ║  SEMESTER   ║ COURSE ║ GRADEPOINT ║
╠════════════╬═════════════╬════════╬════════════╣
║ i090170    ║ Fall 2000   ║    200 ║ 3.67       ║
║ i090170    ║ Fall 2000   ║    201 ║ 2.67       ║
║ i090170    ║ Fall 2000   ║    203 ║ 2          ║
║ i090170    ║ Fall 2000   ║    205 ║ 4          ║
║ i090170    ║ Fall 2000   ║    209 ║ 3.67       ║
║ i090170    ║ Fall 2000   ║    211 ║ 3          ║
║ i090170    ║ spring 2000 ║    200 ║ 3.67       ║
║ i090170    ║ spring 2000 ║    201 ║ 2.67       ║
║ i090170    ║ spring 2000 ║    203 ║ 2          ║
║ i090170    ║ spring 2000 ║    205 ║ 4          ║
║ i090170    ║ spring 2000 ║    209 ║ 3.67       ║
╚════════════╩═════════════╩════════╩════════════╝

注意:学生可以在学期学习多门课程,即 5 或 6

我所做的是我计算了编号。学生在一个学期所修的课程

select abc
from
(
    select Student_Id,Semester, count(distinct Courses) as abc
    from All_Registration B
    group by Student_Id,Semester
)A;

这将返回学生在一个学期中学习的不同课程的数量

现在我想计算SGPA。我想查询可以为每个学生的每个学期执行以下操作:

“所有课程的总和(一门课程的成绩点* 3))/该学生每学期的课程数量”

4

1 回答 1

1

尝试这个,

select sum(Gradepoint*3)/count (distinct course) as gpa
from All_Registration group by Student_Id,Semester 

or

select (3*sum(Gradepoint))/count (distinct course) as gpa
from All_Registration group by Student_Id,Semester

样本结果:

GPA
36927.03
12049.02

注意:我没有包括您的所有数据。所以这个结果会和你预期的不同

SQL 小提琴演示

于 2012-12-31T06:19:09.943 回答