【问题标题】:How to fetch max grade for same course in different academic session如何在不同的学术课程中获取同一课程的最高成绩
【发布时间】:2016-12-25 17:11:20
【问题描述】:

我正在研究 PEOPLESOFT CMS。学生参加课程和 获得成绩。有时学生重复一门课程并获得 更好的成绩。我需要只使用最好的来计算 GPA 年级。所以对于每个重复课程的学生,我必须确定 最高等级是什么。在第二学期,他获得了 3 个grade_point 但在 4 个学期他提高到 4.5 grad_point 然后查询应该 当我们通知所有 4 个学期的结果但获取 4.5 而不是 3 当我们通知到第二个学期时,它可能会返回 3 grad_point.here 我构造了一个在选择 bt 时工作正常的 sql 当我让它查看时,我遇到了处理它的问题 学期它总是返回最大的第 4 学期结果 bt 它错过了最多 2 个学期 gpa 的课程,这里是查询

SELECT DISTINCT A.institution 
 ,A.acad_career 
 ,A.emplid 
 ,a.crse_id 
 ,A.UNT_TAKEN 
 , a.acad_prog 
 ,first_value(a.grade_points) OVER (PARTITION BY A.emplid 
 ,a.crse_id 
  ORDER BY a.grade_points DESC) AS GPA 
  ,first_value(a.strm) OVER (PARTITION BY A.emplid 
  ,a.crse_id 
  ORDER BY a.grade_points DESC) AS strm 
  FROM ps_qau_maxgp_ugrd a 
 WHERE acad_career='UGRD' 
 AND Emplid LIKE '04091313014%'
 AND Strm='1313'
  ORDER BY A.institution ,A.acad_career ,A.emplid  ,A.UNT_TAKEN , a.acad_prog


【问题讨论】:

  • 请发布一些示例数据,实际输出和预期输出
  • 我不明白。您正在选择员工在不同课程中在一门课程中获得的最高成绩,并将其称为“GPA”?为什么? GPA 具有非常明确的含义,与您的选择不同。在您的代码中的任何地方,我都看不到实际 GPA 的计算位置。除了代码之外,您还应该显示表结构(表名、列名和数据类型以及它们之间的关系)。您在解释要求方面做得很好,因此没有必要重复。然后请展示一小部分输出样本,以便我们知道您需要什么。
  • 另外,您在这里显示的似乎是一个中间结果。如果是这样,那没关系,但请向我们展示所需的最终结果。完全有可能不需要这个中间步骤,您可以获得更简单、更快速、更易于编写、阅读和维护的解决方案。

标签: sql oracle peoplesoft


【解决方案1】:

我认为您需要查看输入成绩的日期。对于给定的学期和班级-nbr,您应该获得最高成绩: 伪代码:

select 
   max(date_entered) 
group by 
   institution, 
   acad_career,
   crse_id, 
   term,
   class_nbr(if you have it) 

问题在于,对于您使用的表格,我不相信是实际的招生表格。我只熟悉 CS,所以我会查看 ps_stdnt_enrl 表或 ps_stdnt_car_term 来获取一个术语的累积数据。

【讨论】:

    【解决方案2】:

    只需使用MAXGROUP BY

    SELECT A.institution, 
           A.acad_career, 
           A.emplid, 
           a.crse_id, 
           A.unt_taken, 
           a.acad_prog, 
           Max(a.grade_points) GPA, 
           Max(a.strm)         AS strm 
    FROM   ps_qau_maxgp_ugrd a 
    WHERE  acad_career = 'UGRD' 
           AND emplid LIKE '04091313014%' 
           AND strm = '1313' 
    GROUP  BY A.institution, 
              A.acad_career, 
              A.emplid, 
              a.crse_id, 
              A.unt_taken, 
              a.acad_prog;
    

    【讨论】:

    • 抱歉,如果学生在 4 个学期获得的分数较少,那么它在反向情况下不起作用,那么最好是第 2 个学期的分数。
    • @saqib 这就是我要求提供样本数据的原因。
    • sing 我添加了一些示例数据的图片,请分别查看...我需要在一个视图中全部显示 bt 我的脚本在查看其错过的第二次重复课程后作为单独的 bt 工作正常学期
    • 我在问题中看不到任何图像或链接。最好将示例数据以文本形式发布。
    猜你喜欢
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多