gpt4 book ai didi

sql - 使用SQL计算GPA,报 "Invalid Identifier"错误

转载 作者:行者123 更新时间:2023-12-04 14:26:53 26 4
gpt4 key购买 nike

我正在尝试计算 4 个表中每个学生的 GPA:

Student(STUDENT_ID, STUDENT_LNAME, STUDENT_FNAME, MAJOR)
Course(COURSE_NO, COURSE_NAME, DEPT_CODE, CREDITS)
Grade(COURSE_NO, STUDENT_ID, GRADE)
Grade-point(GRADE, POINTS)

这是我写的代码:

    SELECT S.STUDENT_ID, S.STUDENT_LNAME, S.STUDENT_FNAME, 
SUM(C.CREDITS*P.POINTS)/SUM(C.CREDITS) AS GPA
FROM GRADE_POINT P, STUDENT S, COURSE C, GRADE G
WHERE S.STUDENT_ID=G.STUDENT_ID
AND C.COURSE_NO=G.COURSE_NO
AND G.GRADE=P.GRADE
GROUP BY S.STUDENT_ID, S.STUDENT_LNAME, S.STUDENT_FNAME, GPA;

我还没有学过 CREATE PROCEDURE 查询,因此我不应该在这个级别使用它。但是,代码不起作用。它说 GPA 是一个无效的标识符。老实说,我不知道这是怎么回事。我还尝试为变量删除尽可能多的函数,如下所示:

    SELECT S.STUDENT_ID, S.STUDENT_LNAME, S.STUDENT_FNAME, (C.CREDITS*P.POINTS) AS 
TOT_CR_PT, SUM(C.CREDITS) AS TOT_CREDIT, (TOT_CR_PT/TOT_CREDIT) AS GPA

但是GPA问题依然存在。有什么问题,我该如何解决?

最佳答案

您不希望按 GPA 进行分组,因为这是您为 SUM() 聚合提供的别名,您已将其应用于已分组的集合 (学生)。只需将其从 GROUP BY 中删除:

SELECT S.STUDENT_ID, S.STUDENT_LNAME, S.STUDENT_FNAME, 
SUM(C.CREDITS*P.POINTS)/SUM(C.CREDITS) AS GPA
FROM GRADE_POINT P, STUDENT S, COURSE C, GRADE G
WHERE S.STUDENT_ID=G.STUDENT_ID
AND C.COURSE_NO=G.COURSE_NO
AND G.GRADE=P.GRADE
GROUP BY S.STUDENT_ID, S.STUDENT_LNAME, S.STUDENT_FNAME;

另一点可能会让您得分的是使用 JOIN 而不是(ab)使用 WHERE 子句(最新版本的 Oracle 确实支持此语法):

FROM STUDENT S 
INNER JOIN GRADE G
ON S.STUDENT_ID=G.STUDENT_ID
...

关于sql - 使用SQL计算GPA,报 "Invalid Identifier"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23524509/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com