0

我正在与Ellucian Banner合作,我很难计算 GPA。(横幅是学术机构使用的 ERP。)

GPA 可以在 Banner 中内置的许多视图中找到,包括 AS_STUDENT_DATA。但是,这些视图非常缓慢,我们有一些报告运行了多次,只需要 GPA。我正在尝试提取 GPA,但我得到的值并不完全符合视图中的值。

请注意,我可以使用网络上的许多来源之一来计算 GPA,但是我的值与 Banner views 中的值不完全匹配。(换句话说,我不是在问如何计算一个简单且有据可查的一般 GPA,而是问在 Banner 中这是如何完成的。)

我有这个,它给出了接近但并非全部正确的值:

    SELECT PIDM, 
        round(sum(TOTAL_POINTS)/sum(TOTAL_CREDITS), 2) AS GPA, 
        round(TOTAL_POINTS, 2) AS TOTAL_POINTS, TOTAL_CREDITS, LEVL_CODE   
    FROM (
        SELECT 
            SFRSTCR.SFRSTCR_PIDM AS PIDM, 
            sum(SHRGRDE.SHRGRDE_QUALITY_POINTS * SFRSTCR.SFRSTCR_CREDIT_HR) AS TOTAL_POINTS,
            sum(SFRSTCR.SFRSTCR_CREDIT_HR) AS TOTAL_CREDITS,
            SHRGRDE_LEVL_CODE AS LEVL_CODE
        FROM 
        INNER JOIN SHRGRDE ON SFRSTCR.SFRSTCR_GRDE_CODE = SHRGRDE.SHRGRDE_CODE AND SHRGRDE.SHRGRDE_GPA_IND = 'Y'
        WHERE SHRGRDE_GPA_IND = 'Y'   
          AND SFRSTCR.SFRSTCR_RSTS_CODE IN ('RE', 'RW', 'RR')
        GROUP BY SFRSTCR.SFRSTCR_PIDM, SHRGRDE_LEVL_CODE -- , SFRSTCR.SFRSTCR_CRN, SFRSTCR_TERM_CODE
      ) GT
      WHERE GT.TOTAL_CREDITS > 0 -- Prevent x/0 errors
      GROUP BY PIDM, TOTAL_POINTS, TOTAL_CREDITS, LEVL_CODE

有没有人解决过这个问题?知道班纳是怎么做到的吗?

4

3 回答 3

1

在发布banner8..x 上,如果已经计算了实际或最终GPA,那么它是从学术历史表(SHRTCKN、SHRTCKG、SHRTCKL)中获得的最终成绩,那么您可以从 SHRTGPA 和 SHRLGPA 表中获得 GPA(在学期和水平)

如果您需要重新计算 GPA,那么您将使用 shkcgpa.p_term_gpa 与 pidm 和 term by 参数。因此,两个 GPA 都会重新计算。

于 2018-04-16T23:27:55.337 回答
1

您可以使用横幅的内置功能。它在一个名为 SHKSELS 的包下。该函数称为 F_SHRLGPA_VALUE。SHKSELS 的所有者是 BANINST1。该函数的输入是 pidm、信用等级、指标类型、GPA 类型、请求类型、校园类型、学期。

这是一个细分,然后是一个示例使用。

输入 1 - pidm --self 解释

输入 2 - 信用等级值 - 通过使用找到选项

    select * from stvlevl;

输入 3 - 指标类型 -- 选项为 GPA(计算 GPA)或 QP(质量点)

输入 4 - GPA 类型 - 使用找到的选项

    select distinct shrlgpa_gpa_type_ind from shrlgpa;

输入 5 - 请求类型——选项为 V(输入 3 的值)或 HA(尝试的小时数)或 HE(获得的小时数)或 HP(通过的小时数)或 H(达到 GPA 的小时数)

输入 6 - 校园类型 - 通过使用找到选项

    select * from stvcamp;

输入 7 - 术语——不言自明

如果您不想那么具体,大多数输入可以为 NULL。

例子:

    SELECT  SPRIDEN_ID as IS_NUMBER,
            SHKSELS.F_SHRLGPA_VALUE(SPRIDEN_PIDM,'01','GPA','I','V',NULL,NULL) as GPA
    FROM    SPRIDEN
    WHERE   SPRIDEN_CHANGE_IND IS NULL;

希望有帮助。

于 2016-10-24T18:47:47.183 回答
-1

这是一个猜测。希望它更接近。

SELECT
    PIDM, LEVL_CODE,
    round(sum(TOTAL_POINTS) / sum(TOTAL_CREDITS), 2) AS GPA, 
    sum(TOTAL_POINTS) AS TOTAL_POINTS, sum(TOTAL_CREDITS) AS TOTAL_CREDITS
FROM (
    SELECT 
        SFRSTCR.SFRSTCR_PIDM AS PIDM, SHRGRDE_LEVL_CODE AS LEVL_CODE,
        sum(SHRGRDE.SHRGRDE_QUALITY_POINTS * SFRSTCR.SFRSTCR_CREDIT_HR) AS TOTAL_POINTS,
        sum(SFRSTCR.SFRSTCR_CREDIT_HR) AS TOTAL_CREDITS
    FROM
        SFRSTCR INNER JOIN SHRGRDE ON SFRSTCR.SFRSTCR_GRDE_CODE = SHRGRDE.SHRGRDE_CODE
    WHERE
        SHRGRDE_GPA_IND = 'Y' AND SFRSTCR.SFRSTCR_RSTS_CODE IN ('RE', 'RW', 'RR')
    GROUP BY
        SFRSTCR.SFRSTCR_PIDM, SHRGRDE_LEVL_CODE
  ) GT
  WHERE TOTAL_CREDITS > 0 -- Prevent x/0 errors
  GROUP BY PIDM, LEVL_CODE
于 2015-08-14T17:10:03.613 回答