标题:把平均成绩大于80分的男同学的学号和平均成绩存入另一个表S 大家看下错在哪 ...
只看楼主
jiushiwo
Rank: 1
等 级:新手上路
帖 子:170
专家分:0
注 册:2007-3-10
 问题点数:0 回复次数:10 
把平均成绩大于80分的男同学的学号和平均成绩存入另一个表S 大家看下错在哪了

--11. 把平均成绩大于80分的男同学的学号和平均成绩存入另一个表S——GRADE(SNO,AVG_GRADE);
//*create view sss_grade(sno,gavg)
as
select sno,avg(grade)
from SC,S
where SC.sno=S.sno and S.ssex='男'
group by sno
having avg(grade)>80;
select *
from sss_grade*/

[此贴子已经被作者于2007-4-16 9:54:54编辑过]

搜索更多相关主题的帖子: 男同学 学号 sno grade sss 
2007-04-16 09:44
jiushiwo
Rank: 1
等 级:新手上路
帖 子:170
专家分:0
注 册:2007-3-10
得分:0 
create table ss1_grade
( sno char(9),
avg_grade smallint);
insert
into ss1_grade(SC.sno,avg_grade)
select SC.sno,avg(grade)
from SC,S
where SC.sno=S.sno and S.ssex='男'
group by SC.sno
having avg(grade)>80;*/用这能成功但是我想用视图做做,大家帮帮忙

做你自己! everything will go! lanfei_1234@
2007-04-16 10:00
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
得分:0 
create view sss_grade(sno,gavg)
as
select sno,avg(grade)
from SC,S
where SC.sno=S.sno and S.ssex='男'
group by sno
having avg(grade)>80;

avg(grade)改成avg(grade) as gavg试试

26403021 sql群 博客 blog./user15/81152/index.shtml
2007-04-16 10:25
jiushiwo
Rank: 1
等 级:新手上路
帖 子:170
专家分:0
注 册:2007-3-10
得分:0 
不行啊
还是谢谢棉花糖了

做你自己! everything will go! lanfei_1234@
2007-04-16 12:46
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
得分:0 

create view sss_grade

as

select SC.sno,avg = avg(grade)
from SC,S
where SC.sno=S.sno and S.ssex='男'
group by SC.sno
having avg(grade)>80

不要去命名列名

只有在下列情况下,才必须命名 CREATE VIEW 中的列:当列是从算术表达式、函数或常量派生的,两个或更多的列可能会具有相同的名称(通常是因为联接),视图中的某列被赋予了不同于派生来源列的名称。还可以在 SELECT 语句中指派列名。

如果未指定 column,则视图列将获得与 SELECT 语句中的列相同的名称。


2007-04-16 16:50
xiyou419
Rank: 1
等 级:新手上路
威 望:2
帖 子:104
专家分:0
注 册:2007-3-18
得分:0 
你的问题很明显,你看看你自己发的帖子,你在2楼发的那段程序中要查询的列是确定的,
而你在楼上发的那个你说有错误的程序中查询的列是不确定的,应该是select SC.sno,avg(grade)

[此贴子已经被作者于2007-4-16 22:39:23编辑过]


道德往往可以弥补智慧的缺陷;但智慧永远不能填补道德的空白.
2007-04-16 21:52
xiyou419
Rank: 1
等 级:新手上路
威 望:2
帖 子:104
专家分:0
注 册:2007-3-18
得分:0 
以下是引用Kendy123456在2007-4-16 16:50:39的发言:

create view sss_grade

as

select SC.sno,avg = avg(grade)
from SC,S
where SC.sno=S.sno and S.ssex='男'
group by SC.sno
having avg(grade)>80

不要去命名列名

只有在下列情况下,才必须命名 CREATE VIEW 中的列:当列是从算术表达式、函数或常量派生的,两个或更多的列可能会具有相同的名称(通常是因为联接),视图中的某列被赋予了不同于派生来源列的名称。还可以在 SELECT 语句中指派列名。

如果未指定 column,则视图列将获得与 SELECT 语句中的列相同的名称。


你都说了当列是函数时必须命名列,怎么倒没有命名列???


道德往往可以弥补智慧的缺陷;但智慧永远不能填补道德的空白.
2007-04-16 22:41
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
得分:0 
楼上说的对

2007-04-17 12:03
trhuang
Rank: 1
等 级:新手上路
帖 子:126
专家分:0
注 册:2007-4-1
得分:0 

我在用GROUP BY语句是老是碰到这样的错误:列 's.no' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
刚学,不懂什么意思,能解释一下吗?要怎样解决?

2007-04-21 13:25
边城路人
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:9
帖 子:591
专家分:0
注 册:2007-3-8
得分:0 

字段名不对吧


当你开始怀疑自己时,说明你已经失去了判断力
2007-04-21 13:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-132183-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.135943 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved