ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > SQL in Excel > 如何用SQL语句提取每个学生最高成绩的记录?

如何用SQL语句提取每个学生最高成绩的记录?

作者:绿色风 分类: 时间:2022-08-17 浏览:185
楼主
wise
Q:如何用SQL语句提取每个学生最高成绩的记录?
如图是工作表

 
A:可以借用SQL语句来实现这个功能。具体语句是:
  1. select * from [Sheet1$] where 姓名&"-"&考试成绩 in (select 姓名&"-"&考试成绩 from (select 姓名,max(考试成绩) as 考试成绩 from [Sheet1$] group by 姓名))

结果如图显示:

 
2楼
aley
我是一样的问题,但是把这些代码放在Access中怎么不对呢?
3楼
wise
改一下表名就可以了。
因为Access里面的命名和Excel有点差异的
4楼
apolloh
用in,还用了多个子查询,这样效率较低,建议修改为:

  1. select a.* from [Sheet1$]  as a,(select 姓名,max(考试成绩) as 考试成绩 from [Sheet1$] group by 姓名) as b where a.姓名=b.姓名 and a.考试成绩=b.考试成绩
5楼
donghan
学习了,谢谢楼主
6楼
pzhds
谢谢分享
7楼
yzniker
楼主,你好!按照你的代码或是4楼的代码都出现以下错误

“在查询定义的SELECT列表中,别名‘考试成绩’循环引用。

请问怎么解决,谢谢啊
8楼
海洋之星

又学习了,谢谢分享
9楼
yfan17
小7的SQL语句总是那么出彩。
10楼
wjc2090742
第一个sql帖子是抄本帖的,迟到的评分。
11楼
水星钓鱼
今天刚学了一个也可以实现
  1. select * from [Sheet1$] no1
  2. where 成绩=(select max(成绩) from [Sheet1$] no2 where no1.姓名=no2.姓名)
12楼
wz8856443
因为我是菜鸟,有编译好的附件就更好了
13楼
海洋之星
我觉得这个只需要用max和group by ,不需要用嵌套,如果用嵌套查询速度会不会更慢,能看看版主的数据源吗?
14楼
卢子
感觉好像没必要写的那么麻烦,个人观点,不一定正确
  1. select 姓名,max(成绩) as 最大值 from [sheet2$] group by 姓名
效果.gif
 
15楼
wcymiss
只有姓名与成绩当然不需要嵌套。现在还有个日期呢
16楼
LOGO
  1. select * from [Sheet1$] where dcount("1","sheet1$","姓名='"&姓名&"' and 考试成绩>"&考试成绩)=0
17楼
UOY
a

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap