结果显示,我无法获得正确的结果。我想整理成本列,但失败了。 总费用应该是成本的总和,但是当我分组时它变成6000+。我做的任何错误?
Select p.title, SUM(c.cost) as Total_Fees, c.cost
from programmes p Inner Join courses c
ON p.programme_id = c.programme_id
Inner join class_schedules cs
ON c.course_id = cs.course_id AND c.semester = 4
Inner join class_enrollments ce
ON cs.schedule_id = ce.schedule_id
Inner Join students s
ON ce.student_id = s.student_id and s.student_id = '13WAR1001'
GROUP BY p.title, c.cost;
TITLE TOTAL_FEES COST
--------------------------------------------------------------------------------- ---------- ----------
Bachelor of Information Technology (Honours) in Internet Technology 1728 576
Bachelor of Information Technology (Honours) in Internet Technology 1353 451
Bachelor of Information Technology (Honours) in Internet Technology 1184 592
Bachelor of Information Technology (Honours) in Internet Technology 1800 600
TITLE COURSE_ID TOTAL_FEES
---------------------------------------------------------------------------------------------------- ---------- ----------
Bachelor of Information Technology (Honours) in Internet Technology 14 1728
Bachelor of Information Technology (Honours) in Internet Technology 15 1353
Bachelor of Information Technology (Honours) in Internet Technology 13 1800
Bachelor of Information Technology (Honours) in Internet Technology 12 1184
SQL> SELECT SUM(cost) from courses where course_id = 14 or course_id = 15 or course_id = 13 or course_id = 12;
SUM(COST)
----------
2219
////删除c.cost后的c.cost和组
TITLE TOTAL_FEES
---------------------------------------------------------------------------------------------------- ----------
Bachelor of Information Technology (Honours) in Internet Technology 6065
答案 0 :(得分:0)
您不应在选择或组中包含cost
,因为您不希望根据标题和费用计算组的总和。这样做:
SELECT
p.title,
SUM(c.cost) AS Total_Fees
FROM programmes p
INNER JOIN courses c
ON p.programme_id = c.programme_id
INNER JOIN class_schedules cs
ON c.course_id = cs.course_id AND c.semester = 4
INNER JOIN class_enrollments ce
ON cs.schedule_id = ce.schedule_id
INNER JOIN students s
ON ce.student_id = s.student_id AND s.student_id = '13WAR1001'
GROUP BY p.title;
答案 1 :(得分:0)
你在GROUP BY
中有c.cost而你正在c.cost列上进行SUM聚合
您需要从分组中删除cost
列并仅使用标题,并从select中删除费用列。
GROUP BY p.title
答案 2 :(得分:0)
您正在按c.cost进行分组,这意味着您要按每行的成本进行分组(并且SUM实际上只显示成本)。如果您想为每个标题求和,您应该具有以下内容:
Select p.title, SUM(c.cost) as Total_Fees
from programmes p Inner Join courses c
ON p.programme_id = c.programme_id
Inner join class_schedules cs
ON c.course_id = cs.course_id AND c.semester = 4
Inner join class_enrollments ce
ON cs.schedule_id = ce.schedule_id
Inner Join students s
ON ce.student_id = s.student_id and s.student_id = '13WAR1001'
GROUP BY p.title;