Office中国论坛/Access中国论坛
标题: 查询问题 取得第二数 [打印本页]
作者: cjls2000 时间: 2006-7-27 17:01
标题: 查询问题 取得第二数
查询中 最大/最小 用MAX MIN取的 第二最大 第二最小 如何取得??[em06]
作者: cjls2000 时间: 2006-7-28 16:41
查询中不能实现吗? 1-10的话 第二最大是9 第二最小是2
[em06]
作者: hi-wzj 时间: 2006-7-28 17:29
先作查询,选出最大值或最小值的记录。
再作查询,以原表和前一查询作不匹配查询,同时取最大或最小值。
作者: sgrshh29 时间: 2006-7-28 17:30
SELECT top 1 成绩 AS 第二名 FROM [SELECT top 2 成绩 from 表 ORDER BY 成绩 DESC]. AS a ORDER BY 成绩 ;
作者: andymark 时间: 2006-7-28 18:30
以下是引用sgrshh29在2006-7-28 9:30:00的发言:
SELECT top 1 成绩 AS 第二名 FROM [SELECT top 2 成绩 from 表 ORDER BY 成绩 DESC]. AS a ORDER BY 成绩 ;
[em01]
最小第二 排序倒过来就可以了
作者: andymark 时间: 2006-7-28 18:51
也可以用NOT IN 的方式求得
SELECT TOP 1 产品.产品名称, 产品.单价
FROM 产品
WHERE 产品.产品名称 not in (SELECT TOP 1 产品.产品名称
FROM 产品
ORDER BY 产品.单价 DESC)
ORDER BY 产品.单价 DESC;
作者: cjls2000 时间: 2006-7-28 21:27
能帮我写一下吗? 不太明白啊 谢谢了[em01][em06][em06][attach]19325[/attach]
[此贴子已经被作者于2006-7-28 13:27:14编辑过]
作者: cjls2000 时间: 2006-7-28 23:57
请帮我写一下 谢谢啊[em17][em17][em17][em17]
作者: sgrshh29 时间: 2006-7-29 00:31
这个事情不好办,如果只有二条记录,最大的算不算第二小的?最小的算不算第二大的?如果只有一条记录,又怎么算呢?
[此贴子已经被作者于2006-7-28 16:31:35编辑过]
作者: andymark 时间: 2006-7-29 01:11
是不是一定要把最大最小第二大第二小都写在一个查询,能不能分开写
作者: andymark 时间: 2006-7-29 04:07
在一个查询反映最大,最小,大二,小二[attach]19342[/attach]
作者: cjls2000 时间: 2006-7-29 16:20
andymark
只有一条的时候 MAX=MIN SMAX=SMIN=NULL
只有两条的时候 MAX ,MIN SMAX=SMIN=NULL
这样比较符合现实 [em04]不知道能不能办到呢?
作者: 青青 时间: 2006-7-29 17:11
值为:5,5,4 时二大是5还是4?
作者: sgrshh29 时间: 2006-7-29 18:00
还好楼主只要前二后二,如要前五后五,甚至前十后十,这查询还不把人绕死.建议楼主用ado逐条分析记录,符合条件的追加到临时表.[em06][em06][em06]
作者: wuaza 时间: 2006-7-29 18:16
先生成一个名次查询,然后就好办了。
select *,(select count(*)+1 from tablename where 成绩>a.成绩) as 名次
比楼下抢先一步,呵呵。
[此贴子已经被作者于2006-7-29 10:20:14编辑过]
作者: cjls2000 时间: 2006-7-29 18:17
实际情况 不会有重复值的出现[em01]
作者: sgrshh29 时间: 2006-7-29 18:37
以下是引用wuaza在2006-7-29 10:16:00的发言:
先生成一个名次查询,然后就好办了。
select *,(select count(*)+1 from tablename where 成绩>a.成绩) as 名次
比楼下抢先一步,呵呵。
难点在于有些记录只有1条,只有2条,有些3条.如果都是4条以上就好办多了.wuaza大侠有何见解?
作者: wuaza 时间: 2006-7-29 18:45
只有一条记录12的话
第一大是12
第二大是null
第一小是12
第二小是null
也只能这样了,好像。
作者: andymark 时间: 2006-7-29 19:17
用临时表的方式比较容易现实
作者: cjls2000 时间: 2006-7-29 19:33
实际的情况 是 一定是成对出现的 不是2条 就是4条 或者6条 只要能帮我实现 如果2条时候 第二MAX MIN为NULL 谢谢啊 不过区分 不仅仅是ID 还有一个日期 不日期ID可以重复[em04][attach]19353[/attach]
[此贴子已经被作者于2006-7-29 12:16:14编辑过]
作者: andymark 时间: 2006-7-29 20:34
基本上解决只有二条数据NULL值的问题,测试一下看数据结果正不正确
[attach]19354[/attach]
作者: cjls2000 时间: 2006-7-29 23:01
问题在于 多了一个日期 怎么写?[em06]
作者: andymark 时间: 2006-7-29 23:10
你整理一下例子,多一些数据,我再测试一下
作者: cjls2000 时间: 2006-7-30 00:25
我已经上传了例子 麻烦再帮我 写一下 谢谢 [em02][attach]19358[/attach]
[em27][em17]
作者: andymark 时间: 2006-7-30 04:28
如果每天的数据都有4条,执行查询1就可以, 现在要分几步走 [attach]19360[/attach]
作者: cjls2000 时间: 2006-7-30 18:00
我修改一下工号的类型 文本---数字 就无法运行了
[em06]
还有实际情况是 绝大部分都是 2个时间 极少出现4个时间[em06]
[此贴子已经被作者于2006-7-30 10:02:00编辑过]
作者: andymark 时间: 2006-7-30 18:05
之前不是叫你整理好例子,你现在用的把数据删除了传上来不行吗?
上面的例子数据量大可能有点慢,用ADO追加到临时表更容易实现
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |