**注: もう少し進んで、NULLIF(0 または 5) を追加する必要があります。ここに私の答えについて短い投稿を書きました: http://peterkellner.net/2013/10/13/creating-a-compound-nullif-in-avg-function-with-sqlserver/ しかし、私の解決策には満足していません)
出席者がコースへの推定出席を入力する結果の表があります。彼らが 0 を入力するか空のままにした場合、それを無視して、入力された値の平均を取得します。SQL 全体の where 句がないと、その制約を AVG 関数に追加する方法がわかりません。それは可能ですか?私のコードは次のようになります: (EstimatedNumberAttendees は私が求めているものです)。
SELECT dbo.SessionEvals.SessionId,
AVG(Cast (dbo.SessionEvals.CourseAsWhole as Float)) AS CourseAsWholeAvg,
COUNT(*),
COUNT(case
when dbo.SessionEvals.InstructorPromptness = 'On Time' then 1
else null
end) AS SpeakerOnTime,
COUNT(case
when dbo.SessionEvals.InstructorPromptness = 'Late' then 1
else null
end) AS SpeakerLate,
COUNT(case
when dbo.SessionEvals.InstructorPromptness = 'NoShow' then 1
else null
end) AS SpeakerNoShow,
COUNT(case
when dbo.SessionEvals.PercentFull = '10% to 90%' then 1
else null
end) AS PercentFull10to90,
COUNT(case
when dbo.SessionEvals.PercentFull = '> 90%' then 1
else null
end) AS PercentFullGreaterThan90,
COUNT(case
when dbo.SessionEvals.PercentFull = ' < 10% Full ' then 1
else null
end) AS PercentFullLessThan10,
AVG(Cast (dbo.SessionEvals.EstimatedNumberAttendees as Float)) AS
EstimatedAttending
FROM dbo.Sessions
INNER JOIN dbo.SessionEvals ON (dbo.Sessions.Id =
dbo.SessionEvals.SessionId)
WHERE dbo.Sessions.CodeCampYearId = 8
GROUP BY dbo.SessionEvals.SessionId