因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

stu666 2011-05-25 07:57:58
--(3)创建一个名为tea_view、计算机工程系学生计算机导论的平均成绩的视图显示的列要求包括学号、姓名,平均成绩。
CREATE VIEW tea_view(avg_grade)
AS
SELECT avg(a.grade)
FROM stud_grade a,lesson_info b
GROUP BY a.course_id
HAVING a.course_id=(select course_id from lesson_info where course_name='计算机导论')


学号、姓名怎么显示?
只要我在select后 加了name和id,avg(a.grade)
FROM。。。
就会提示这种错误
列 'a.NAME' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

这是为什么呢,该怎么解决?
...全文
322 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
stu666 2011-05-25
  • 打赏
  • 举报
回复
CREATE VIEW tea_view(stuid,name,avg_grade)
AS
SELECT stud_id,name,
(SELECT avg(a.grade)
FROM stud_grade a,lesson_info b
GROUP BY a.course_id
HAVING a.course_id=(select course_id from lesson_info where course_name='计算机导论'))
FROM stud_info
WHERE substring(stud_id,3,2)='01'
百年树人 2011-05-25
  • 打赏
  • 举报
回复
CREATE VIEW tea_view
AS
SELECT a.id,a.name,b.avg_grade
FROM stud_grade a,
(select course_id,avg(a.grade) as avg_grade from lesson_info
where course_name='计算机导论'
group by course_id
) b
where a.course_id=b.course_id
stu666 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fredrickhu 的回复:]
SQL code
CREATE VIEW tea_view(avg_grade)
AS
SELECT
a.course_id,avg(a.grade)
FROM
stud_grade a,lesson_info b
GROUP BY
a.course_id
HAVING
a.course_id=(select course_id from lesson_info whe……
[/Quote]
没解决啊,要求包括学号、姓名,平均成绩。
stu666 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dotbyte 的回复:]
先把数据列出后再看一看吧,所有不要聚合函数的列,必须在group by 中,这是铁定的规则,同时也是符合逻辑的规则
[/Quote]
做题的时候发现了这个规律,那这题该怎么解决呢,还是这题本身有点问题。
stu666 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 josy 的回复:]
try

SQL code
CREATE VIEW tea_view
AS
SELECT a.id,a.name,avg(a.grade) as avg_grade
FROM stud_grade a,lesson_info b
where a.course_id=b.course_id
and b.course_name='计算机导论'
GROUP BY a.id,a.name……
[/Quote]
不可以用a.id,a.name,这样不是求计算机导论的平均成绩。
--小F-- 2011-05-25
  • 打赏
  • 举报
回复
CREATE VIEW tea_view(avg_grade)
AS
SELECT
a.course_id,avg(a.grade)
FROM
stud_grade a,lesson_info b
GROUP BY
a.course_id
HAVING
a.course_id=(select course_id from lesson_info where course_name='计算机导论')
dotbyte 2011-05-25
  • 打赏
  • 举报
回复
先把数据列出后再看一看吧,所有不要聚合函数的列,必须在group by 中,这是铁定的规则,同时也是符合逻辑的规则
百年树人 2011-05-25
  • 打赏
  • 举报
回复
try
CREATE VIEW tea_view
AS
SELECT a.id,a.name,avg(a.grade) as avg_grade
FROM stud_grade a,lesson_info b
where a.course_id=b.course_id
and b.course_name='计算机导论'
GROUP BY a.id,a.name

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧