【问题标题】:calculating gpa sql计算gpa sql
【发布时间】:2012-12-31 06:08:54
【问题描述】:

计算表中学生的 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))/每门课程的数量 那个学生的学期”

【问题讨论】:

    标签: sql join count group-by sum


    【解决方案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 Fiddle Demo

    【讨论】:

    • @JW。给sql fiddle的链接时如何增加字体大小?
    • @JW。实际上你是怎么做到的:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多