使用来自不同表格的值计算信用

时间:2013-10-25 12:05:19

标签: sql-server

我有两个表,第一个表名为Courses,包括列:coursecode&学分。 另一个表是course_instances,包括列:StudentID,finished_course,courscode。

现在我想计算在finished_course列中有一个'1'的每个课程和一个特定学生ID的所有学分的总和。

寻找一种简单的方法,最好是在函数中。使用microsoft sql。

尝试这样的事情,从StudentID获得完成的课程,然后我还需要计算这些课程中学分的总和,但是因为这段代码没有工作,所以甚至没有那么远。

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

2 个答案:

答案 0 :(得分:3)

这里我按学生ID分组。如果您想要特定学生,请在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

答案 1 :(得分: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