【发布时间】:2020-07-05 01:23:41
【问题描述】:
我要解决的问题:
使用 SELECT 语句编写 CTE,该语句为每个具有这些列的课程的学生返回一行:
- Student 表中的 StudentID 列
- 课程表中课程单元的总和
编写使用此 CTE 的 SELECT 语句为每个学生返回这些列:
- CTE 中的 StudentID 列
- CTE 课程单元的总和
- 学生是全日制还是非全日制的指示(提示:要确定学生是否是全日制,请使用 IIF 函数测试课程单元的总和是否大于 9。)
- 总学费(提示:要计算学费,请使用 IIF 函数来确定学生是全日制还是非全日制。然后,将课程单元的总和乘以 Tuition 表中的 PerUnitCost 列,并将其添加到Tuition 表中的 FullTimeCost 或 PartTimeCost 列。为此,请使用交叉连接来连接 CTE 和 Tution 表。这使得 Tuition 表中的列可用于 SELECT 语句。)
我在做什么:
WITH UnitsSummary AS (
SELECT Students.StudentID,SUM(CourseUnits) AS TotalUnits
FROM Students JOIN StudentCourses ON Students.StudentID = StudentCourses.StudentID
JOIN Courses ON StudentCourses.CourseID = Courses.CourseID
GROUP BY Students.StudentID,CourseUnits
)
SELECT StudentID, TotalUnits, IIF( SUM (TotalUnits) >9,'FUlltime','Parttime'),FullTimeCost + (TotalUnits * PerUnitCost) AS Tuition
FROM UnitsSummary CROSS JOIN Tuition
我的错误信息:
消息 8120,级别 16,状态 1,第 8 行列“UnitsSummary.StudentID”为 在选择列表中无效,因为它不包含在 聚合函数或 GROUP BY 子句。
【问题讨论】:
标签: mysql sql join computer-science iif