返回平均值与特定行一起返回

时间:2017-03-01 12:03:22

标签: mysql sql

我有两个问题。一个返回班级平均,最低结果和最高结果。第二个返回特定学生的结果。我试图将两个查询放在一个查询中,以便显示特定的学生结果以及该课程的最小,最大和平均结果。我尝试过的任何内容都会导致错误。我有什么简单的遗失吗?以下两个问题:

SELECT Module.ModuleTitle, Module.ModuleDescription, 
MIN(StudentModule.StudentGradeFinal) as lowres, 
MAX(StudentModule.StudentGradeFinal) as topres, 
AVG(CAST(StudentModule.StudentGradeFinal as DECIMAL(9,2))) as averageres
FROM StudentModule
join Module on StudentModule.ModuleId = Module.ModuleId
WHERE Semester = 'Spring'
AND Module.ModuleId in 
(
SELECT Module.ModuleId FROM Module 
Join StudentModule on Module.ModuleId = StudentModule.ModuleId
Where StudentId = '40104002'
)
GROUP BY Module.ModuleTitle, Module.ModuleDescription

SELECT Module.ModuleTitle, Module.ModuleDescription, StudentGradeFinal
FROM StudentModule
join Module on StudentModule.ModuleId = Module.ModuleId
WHERE Semester = 'Spring' AND StudentModule.StudentId = '40104002'

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你有两个查询总是只返回一行(平均/最小/最大一个,学生详细一个)。如果你想在一个结果中“合并”它们,你所要做的就是使用两个查询作为内联视图,并将它们连接到一直是真的,比如1 = 1.

所以:

select * from
(
first query here
) a
join
(
second query here
) b
on 1=1

小心 - 确保查询只返回一行,否则你将开始获得笛卡儿产品,并产生各种奇怪的东西。

希望有所帮助