0

我有两个表,第一个表名为 Courses,包括列:课程代码和学分。另一个表是 course_instances,包括列:StudentID、finished_course、courscode。

现在,我想计算在finished_course 列中为“1”的每门课程和特定StudentID 的所有学分的总和。

寻找一种简单的方法来做到这一点,最好是在一个函数中。使用微软的 sql。

尝试过这样的事情,要从 StudentID 获得完成的课程,我还需要计算这些课程的学分总和,但由于这段代码不起作用,我什至没有得到那么远。

SELECT coursecode
FROM course_instances where StudentID = 'asd123' and finished_course > 0
JOIN courses
ON course_instances.coursecode=courses.coursecode;
4

2 回答 2

3

在这里,我按学生证分组。如果您想要特定学生,请在 where 子句中提供学生 ID。

DROP TABLE cources
create table cources
(
    cname varchar (20),
    cCredits float
)
INSERT INTO cources
(
    cname,
    cCredits
)
Values
('FNC', 144.6),
('MTH', 244.6),
('ENG', 344.6),
('GRAM', 744.6),
('QUID', 644.6)

DROP TABLE course_instances;
CREATE TABLE course_instances
(
    StudentID INT, 
    finished_course INT, 
    courscode varchar(10)
)
INSERT INTO course_instances
(
    StudentID, 
    finished_course, 
    courscode
)
Values
(123,1,'FNC'),
(125,0,'FNC'),
(127,0,'FNC'),
(123,1,'ENG'),
(125,1,'ENG'),
(127,1,'ENG'),
(127,1,'QUID'),
(189,0,'QUID'),
(123,1,'QUID'),
(127,1,'MTH')


SELECT sum(c.cCredits) , StudentID
FROM cources c
INNER JOIN course_instances ci
ON ci.courscode = c.cname
WHERE ci.finished_course = 1
GROUP BY 
StudentID
于 2013-10-25T12:23:12.333 回答
1
SELECT sum(courseCredits)
FROM course_instances a
JOIN courses b
ON b.coursecode=a.coursecode
where a.StudentID = 'asd123' and b.finished_course > 0
于 2013-10-25T12:28:34.617 回答