錯誤語句:SELECT
s.SID,
s.Sname,
AVG(a.score)
FROM
student s
LEFT JOIN sc a ON s.SID = a.SID
WHERE AVG(a.score) > 60
GROUP BY
s.SID
正確語句:
SELECT
s.SID,
s.Sname,
AVG(a.score)
FROM
student s
LEFT JOIN sc a ON s.SID = a.SID
GROUP BY
s.SID
HAVING(a.score) >60
原因:
where 子句的作用是對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾數據,where條件中不能包含聚組函數,使用where條件過濾出特定的行。
having 子句的作用是篩選滿足條件的組,即在分組之后過濾數據,條件中經常包含聚組函數,使用having 條件過濾出特定的組,也可以使用多個分組標准進行分組。