我有两个表,第一个表名为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;
答案 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