SQL 函数仅返回低于 2.5 的学生成绩

问题描述 投票:0回答:1

我希望这个 SQL 报告仅在成绩低于 2.5 时返回lastfirst、grade_level、course_number 和grade。

我返回的报告是每个学生成绩低于 2.5 的每个年级的课程(每个学生 7 门课程)的一行。

当我删除Where pg.grade <=2.5 then the all 7 student courses appear 7 times each. With replaced grades.

例如。学生 A 有两门成绩低于 2.5(1 门成绩为 2.5/,1 门成绩为 2.1) 在第一个 7 门课程列表中,该学生的 2.5 成绩在所有课程中重复出现。第二个 7 门课程列表的所有 7 门课程的学生成绩均为 2.1。

在本报告中,学生的成绩被替换为低于 2.5 的成绩。

学生 A 在 1001ENG 中的成绩为 3.5,但报告为该学生的英语成绩指定了 2.5 和 2.1。

在第二个例子中

1001ENG 重复 7 次 - 在一个实例中反映英语成绩,在其他实例中反映其他六个成绩。

我做错了什么?

SQL 查询

SELECT s.lastfirst, s.grade_level, cc.course_number, pg.grade
FROM students s
JOIN cc 
ON s.id = cc.studentid
JOIN pgfinalgrades pg
ON s.id = pg.studentid
WHERE pg.grade <='2.5'
AND s.schoolid=1
AND s.enroll_status=0
AND cc.termid>=3300
AND cc.course_number <>'OH9' 
AND cc.course_number <>'OH10'
AND cc.course_number <>'OH11'
AND cc.course_number <>'OH12'
AND cc.course_number <>'ASSEM'
AND cc.course_number <>'HR'
AND cc.course_number <>'Lunch'
AND pg.finalgradename = 'F1'
ORDER BY s.grade_level, s.lastfirst`

(https://i.stack.imgur.com/DlrB8.png)`

sql oracle-sqldeveloper
1个回答
0
投票

假设您有一个包含 schoolid、courseNumber、studentid 的 courseTable,而 pgfinalgrades 也包含 schoolid、courseNumber、grade、studentID。最后假设您的学生表仅包含与学生相关的人口统计信息。

SELECT s.lastfirst
, s.grade_level
, c.course_number
, g.grade
FROM students as s
INNER JOIN courses as c
ON s.schoolid = c.schoolid
s.id = c.studentid
INNER JOIN pgfinalgrades as g
ON c.schoolid = g.schoolid
and c.courseNumber = g.courseNumber
and c.studentid = g.studentid
WHERE pg.grade <='2.5'
AND s.enroll_status=0
AND c.termid>=3300
AND c.course_number not in ('OH9','OH10','OH11','OH12','ASSEM','HR','Lunch','F1')
ORDER BY s.grade_level, s.lastfirst
© www.soinside.com 2019 - 2024. All rights reserved.