请教一个sql语句问题

sysabod 2009-11-19 08:50:33
大家好,我的代码如下:

o --q5
;with T(s_id,avg_score) as
(select X.s_id ,avg(score)
from score,
(select s_id from score where score >= 80
except
select s_id from score where score < 80)
as X
where X.s_id=score.s_id
group by X.s_id

)
select top 3 * from T order by avg_acore desc

消息 207,级别 16,状态 1,第 13 行
列名 'avg_acore' 无效
为什么会这样呢?我的意思是先把试图T按avg_score按大到小排列。再取头三列,请问应该怎么正确实现呢?
...全文
65 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
icelovey 2009-11-19
  • 打赏
  • 举报
回复

;WITH T AS
(SELECT X.S_ID ,AVG_ACORE=AVG(SCORE)
FROM SCORE,
(SELECT S_ID FROM SCORE WHERE SCORE >= 80
EXCEPT
SELECT S_ID FROM SCORE WHERE SCORE < 80)
AS X
WHERE X.S_ID=SCORE.S_ID
GROUP BY X.S_ID

)
SELECT TOP 3 * FROM T ORDER BY AVG_ACORE DESC

最好把给点例子数据出来, 这样大家就能调试对不对啦。。
bancxc 2009-11-19
  • 打赏
  • 举报
回复
不知道能不能你那样写
;with T as
(select X.s_id ,avg_acore=avg(score)
from score,
(select s_id from score where score >= 80
except
select s_id from score where score < 80)
as X
where X.s_id=score.s_id
group by X.s_id

)
select top 3 * from T order by avg_acore desc
dawugui 2009-11-19
  • 打赏
  • 举报
回复
;with T(s_id,avg_score) as
(select X.s_id ,avg(score) avg_acore
from score,
(select s_id from score where score >= 80
except
select s_id from score where score < 80)
as X
where X.s_id=score.s_id
group by X.s_id

)
select top 3 * from T order by avg_acore desc
--小F-- 2009-11-19
  • 打赏
  • 举报
回复
---try
;with T(s_id,avg_score) as
(select X.s_id ,avg(score) as avg_score
from score,
(select s_id from score where score >= 80
except
select s_id from score where score < 80)
as X
where X.s_id=score.s_id
group by X.s_id

)
select top 3 * from T order by avg_acore desc

34,587

社区成员

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

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