如何在不同的学术课程中获取同一课程的最高分

时间:2016-12-25 17:11:21

标签: sql oracle peoplesoft

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

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

enter image description here
enter image description here enter image description here enter image description here

2 个答案:

答案 0 :(得分:0)

只需使用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;

答案 1 :(得分:0)

我相信您需要查看成绩输入的日期。对于给定的术语和课程,您应该获得最高分: 伪代码:

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来获取一个术语的累积数据。