我必須得到我工作地點的學生的最終成績。從查詢中排除0值
該查詢工作得很好,除了如果有一個0值,它包括它,並且這不會發生。我如何從查詢中排除0,如果我沒有弄錯,排除的0必須來自查詢中的AVG。
這裏是我的查詢:
SELECT
gbc.StudentID as [Student ID],
per.FirstName + ' ' + per.MiddleName + ' ' + per.LastName as [Student Name],
gbc.ClassID as [Class ID],
cls.Name as [Class Name],
ROUND(SUM(gbc.weightedgrade),0) as [Final Grade]
FROM (SELECT
gg.ClassID,
gg.StudentID,
ga.AssessmentId,
ga.Title ,
AVG(gg.ReceivedPoints * ga.Weight/100.0) as weightedgrade
FROM GbkAssessments as ga INNER JOIN GbkGrades as gg ON ga.AssessmentID = gg.AssessmentID AND ga.ClassID = gg.ClassID
JOIN Classes as cls on ga.classID = cls.classID JOIN GbkSummary as gbs on ga.classID = gbs.classID
WHERE gg.StudentID = 1201417 and cls.YearID = 251 and gbs.TermID = 1
GROUP BY gg.StudentID, gg.ClassID, ga.AssessmentId, ga.Title) as gbc JOIN Classes as cls on gbc.classID = cls.classID
join Person as Per on Per.PersonID = gbc.StudentID join Person_Student as PS on Per.PersonID = PS.StudentID
GROUP BY gbc.StudentID, gbc.ClassID, cls.Name, per.FirstName, per.LastName, per.MiddleName
ORDER BY gbc.ClassID ASC
我的查詢包括一些評估是存在,但沒有一個值尚未0的,例如尚未應用了白卷,那一個不是招功課沒有被檢查過。
如何從帳戶中刪除這些值?有沒有AVGIFNOTNULL或類似的東西?
AVG忽略空值。嘗試在WHERE子句中添加一個附加條件AND gg.ReceivedPoints * ga.Weight <> 0'。 – krokodilko