关于SQL中WHERE后面能否跟聚合函数生成的字段名称!

我通过聚合函数sum生成一个新的字段:sum(score.绩点*course.学分)/sum(course.学分)as平均绩点,在这里,“平均绩点”是新生成的字段,在表里... 我通过聚合函数sum生成一个新的字段:sum(score.绩点*course.学分)/sum(course.学分) as 平均绩点,在这里,“平均绩点”是新生成的字段,在表里面是没有的!

我想在WHERE约束语句中求“平均绩点”小于某一值的记录,比如说:平均绩点<2.2 可这个约束条件在ASP里面是执行不了的,出现以下错误:

错误类型:
Microsoft JET Database Engine (0x80040E10)
至少一个参数没有被指定值。

该如何解决呢?请高手明指!
展开
 我来答
WHITE_WIN
推荐于2016-07-13 · TA获得超过6111个赞
知道大有可为答主
回答量:3759
采纳率:50%
帮助的人:1902万
展开全部
不能直接使用新的字段名,可以在HAVING子句中以聚合函数作为条件。
如:
select sum(score.绩点*course.学分)/sum(course.学分) as 平均绩点,fieldn from tablename group by fieldn having
sum(score.绩点*course.学分)/sum(course.学分)>300

如果非要使用新字段名也可以,要把分组查询结果作为子查询。
如:
select * from
(
select sum(score.绩点*course.学分)/sum(course.学分) as 平均绩点,fieldn from tablename group by fieldn
) a
where 平均绩点>300
尚宁大词
2020-01-05 · TA获得超过3.6万个赞
知道小有建树答主
回答量:1.2万
采纳率:35%
帮助的人:856万
展开全部
不能直接使用新的
字段名
,可以在HAVING子句中以
聚合函数
作为条件。
如:
select
sum(score.
绩点
*course.学分)/sum(course.学分)
as
平均绩点
,fieldn
from
tablename
group
by
fieldn
having
sum(score.绩点*course.学分)/sum(course.学分)>300
如果非要使用新字段名也可以,要把分组查询结果作为
子查询

如:
select
*
from
(
select
sum(score.绩点*course.学分)/sum(course.学分)
as
平均绩点,fieldn
from
tablename
group
by
fieldn
)
a
where
平均绩点>300
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-04-09
展开全部
select * from (select sum(score.绩点*course.学分)/sum(course.学分) as 平均绩点 from tablename) a where 平均绩点<2.2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式