SQL group by 和 order by 合用,出错!!!

例如:表score里面有id,name,class,score,怎么查询每个班级的前3名要求用一条语句?我的答案是:select*fromscoregroupbyclas... 例如:表 score 里面有 id,name,class,score,怎么查询 每个班级的前3名 要求用一条语句 ?
我的答案是:
select *
from score
group by class
order by score
go
为什么报错:
列 'score.id' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中.
列 'score.name' 在选择列表中无效,因为该列既不包含在聚合函数中,也不包含在 GROUP BY 子句中.
...
为什么会出错,怎么改正呢?
请注意:
1.按成绩排序
2.更重要的是有一个先按班级分,再在每个班级中去找前3名
基本上所有的回答者都只满足了第一个条件,最重要的第2个条件都没有满足
展开
 我来答
nandaowo
2010-01-01 · TA获得超过195个赞
知道小有建树答主
回答量:311
采纳率:0%
帮助的人:188万
展开全部
select top 3 * from score order by score
补充一下:再按班级分不太清楚,个人觉得这个表设计得有问题,比较乱。也导致不好查询出你想要的解过,(因为group by语句后面跟的字段必须包含前面所查询的出聚集函数之外的字段)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
莱伯泰科
2024-10-28 广告
LabTech Group,即北京莱伯泰科仪器股份有限公司,是业界领先的实验室科学仪器与解决方案提供商。我们专注于分析测试仪器的研发、生产和销售,致力于为全球科研工作者、高校及企业实验室提供高性能、高稳定性的产品与服务。通过持续的技术创新与... 点击进入详情页
本回答由莱伯泰科提供
zhaokai0411
2010-01-01 · TA获得超过281个赞
知道答主
回答量:50
采纳率:0%
帮助的人:71万
展开全部
select top 3 *
from score
order by score desc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
4422336
2010-01-01 · 超过58用户采纳过TA的回答
知道小有建树答主
回答量:115
采纳率:0%
帮助的人:170万
展开全部
select * from score s where (select count(1) from score where class=s.class and score>s.score)<=2
order by class,score desc
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ceaning
2010-01-01 · TA获得超过183个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:90.7万
展开全部
select top3 id,name,class,score from score group by class order by score desc
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式