ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2275|回复: 9

请教 sql 排名问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-1-18 18:24 | 显示全部楼层 |阅读模式
Excel+access
CJBC表
序号  姓名  成绩
01    aaa   90
02    bbb   95
03    ccc   95
04    ddd   92
问题1  用Strsql = "select  成绩 from  CJBC a WHERE(select count(成绩) from CJBC where 成绩>=a.成绩)=2" 
查找名次为2的成绩查找不到,查找名次为1,3,4的可以查到,即并列名次查找不到,怎样修改代码让并列名次也能查到。
问题2  请教用sql按成绩排名代码能并列名次。
谢谢!!!!!!
[此贴子已经被作者于2007-1-18 18:29:59编辑过]

TA的精华主题

TA的得分主题

发表于 2007-1-18 19:03 | 显示全部楼层

Strsql = "select  成绩 from  CJBC a WHERE(select count(成绩) from CJBC where 成绩>a.成绩)=1" 

即第2名

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-18 19:16 | 显示全部楼层

谢谢!

我是说并列名次查找=2,查找不到,=3可以查到。怎样解决并列名次2,3都能查到。

TA的精华主题

TA的得分主题

发表于 2007-1-18 19:41 | 显示全部楼层

Strsql = "select  成绩 from  CJBC a WHERE(select count(成绩) from CJBC where 成绩>a.成绩)=1" 

即第2名

成绩大于自己的为1,如果并列第2名的有2个以上,都能查到(即2个或2个以上第2名都可显示于结果)

你的SQL,=3,仅指并列第2名的有2个,即大于自己的为1个(即第1名),与自己相等有2个

如果并列第2名的有3个,则=4时,大于自己的为1个(即第1名),与自己相等有3个

而我的SQL,=1,则比自己大的只有一个(即第1名):

如果第2名有2个,即显示2个; =2时,大于自己的为2个,无结果,实际上是无第3名,只有第4名

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-18 19:52 | 显示全部楼层

谢谢 drinkcrow !

由于数据很多想让名次为变量添入任意名次都能查到。有其他办法吗?

TA的精华主题

TA的得分主题

发表于 2007-1-18 20:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

不知道你的目的,

如你1楼的例子,

第2名有2个,2个都显示就好了

明明无第3名,为何一定要查到,返回无第3名好了

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-18 21:08 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-1-19 21:32 | 显示全部楼层
QUOTE:
以下是引用zygz在2007-1-18 18:24:19的发言:
问题2  请教用sql按成绩排名代码能并列名次。

第一种:select (select count(成绩)+1 from CJBC where 成绩>A.成绩),成绩 from CJBC A order by 成绩 desc
结果:
成绩 排名
98      1
95      2
95      2
92      4

第二种:select (select count(成绩) from (select distinct 成绩 from CJBC)as b where b.成绩>=A.成绩),成绩 from CJBC A order by 成绩 desc
结果:
成绩 排名
98      1
95      2
95      2
92      3

QUOTE:
以下是引用zygz在2007-1-18 21:08:00的发言:

我想让程序查找2,3名时都查到95值。

不可能啊,分数相同,名次自然相同,除非你的名次不是仅根据成绩来的,那就得确切说明你的名次的排列规则,比如主关键字是成绩,次关键字是什么等等~

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-19 21:56 | 显示全部楼层

谢谢爱歌学习版主!!!

您的排名代码正是我所求的,再次谢谢!!!问题1是做为任意人数上线分用的,问题已解决,只是感觉sql这样查询速度较慢。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-1-19 22:45 | 显示全部楼层

请教爱歌学习版主:

本人刚接触Excel+access,排名数据是先排名存入access,还是查询时进行排名,那种方法好,请指教。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 07:13 , Processed in 0.041740 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表