设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: lxjii
打印 上一主题 下一主题

[其它] 求助,运动会记分的问题

[复制链接]
11#
发表于 2007-8-9 10:23:26 | 只看该作者
假定某场比赛结果如下:
排名次序排名得分实际名次
181
271
361
454
545
636
727
817

先做一个过渡查询1:
SELECT 表1.[实际名次], First(表1.[排名得分]) AS 得分之First, Count(表1.[实际名次]) AS 名次之Count
FROM 表1
GROUP BY 表1.[实际名次];

再用这个查询2就可以:
SELECT 表1.[实际名次], IIf([名次之Count]=1,[得分之First],iif([名次之Count]=2,[得分之First]-0.5,iif([名次之Count]=3,[得分之First]-1,iif([名次之Count]=4,[得分之First]-1.5,iif([名次之Count]=5,[得分之First]-2,iif([名次之Count]=6,[得分之First]-2.5,iif([名次之Count]=7,[得分之First]-3,[得分之First]-3.5))))))) AS 实际得分
FROM 表1 INNER JOIN 查询1 ON 表1.[实际名次]=查询1.[实际名次];

[ 本帖最后由 sgrshh29 于 2007-8-9 10:32 编辑 ]
12#
 楼主| 发表于 2007-8-10 01:16:09 | 只看该作者
太谢谢啦,我要马上试试看,谢谢!
13#
发表于 2007-8-10 04:51:30 | 只看该作者
原帖由 lxjii 于 2007-8-10 01:16 发表
太谢谢啦,我要马上试试看,谢谢!

这样子速度更快一些.
表的结构:
排名次序排名得分姓名实际名次
18A1
27B1
36C1
45D4
54E5
63F6
72G7
81H7

查询1(过渡查询):
SELECT 表1.实际名次, Sum(表1.排名得分) AS 得分之Sum, Count(表1.实际名次) AS 名次之Count
FROM 表1
GROUP BY 表1.实际名次;
查询2(也就是结果):
SELECT 表1.姓名, 表1.实际名次, [得分之Sum]/[名次之Count] AS 实际得分
FROM 查询1 INNER JOIN 表1 ON 查询1.实际名次 = 表1.实际名次;
查询结果:
姓名实际名次实际得分
A17
B17
C17
D45
E54
F63
G71.5
H71.5


[ 本帖最后由 sgrshh29 于 2007-8-10 04:54 编辑 ]
14#
发表于 2007-8-10 10:47:45 | 只看该作者
如果来个前7名再加2个并列第8名怎么处理?
15#
发表于 2007-8-10 11:00:44 | 只看该作者
原帖由 hi-wzj 于 2007-8-10 10:47 发表
如果来个前7名再加2个并列第8名怎么处理?

呵呵,那要问lxjii这个评委了.
16#
 楼主| 发表于 2007-8-10 20:59:05 | 只看该作者
原帖由 hi-wzj 于 2007-8-10 10:47 发表
如果来个前7名再加2个并列第8名怎么处理?

已经考虑了很多情况,没想到还有这样的极限情况存在
管他的,先搞搞先吧

谢谢两位的热情帮助

呃对了,如果在窗体的话能否做出这样的效果?
17#
发表于 2007-8-13 14:25:17 | 只看该作者
编程是要先考虑到各种意外情况下如何处理,保证逻辑不出现差错,然后才说如何设计数据库,最后才考虑如何运算。但初学的人一般却喜欢反过来操作,因此经常会在编得差不多时,发现一个没考虑到的情况,不得不全部推倒重来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-18 09:23 , Processed in 0.080475 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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