参考自:https://blog.csdn.net/fly_fly_fly_pig/article/details/81325116
平时用sql查询经常遇到的问题,这次搜到了一个博主的文章,解决了问题。但是其中的深层原因还没有想清楚,本文需要完善。
更正前
CREATE VIEW V_AVG_S_G
AS
SELECT student.stname ,COUNT(*) AS '选课门数',AVG(score.grade) AS '平均分'
FROM score,student
WHERE score.stno = student.stno
GROUP BY score.stno
报错:消息 8120,级别 16,状态 1,过程 V_AVG_S_G,行 3 [批起始行 0]
选择列表中的列 'student.stname' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
更正后
CREATE VIEW V_AVG_S_G
AS
SELECT MAX(student.stname) AS '学生名',COUNT(*) AS '选课门数',AVG(score.grade) AS '平均分'
FROM score,student
WHERE score.stno = student.stno
GROUP BY score.stno
那个MAX聚合函数,也可以用MIN函数