我正在研究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
答案 0 :(得分:0)
只需使用MAX
和GROUP 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来获取一个术语的累积数据。