标题:vfp用sql如何取出每个班中的前3名
只看楼主
djszyyc
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2013-3-17
得分:0 
回复 31楼 taifu945
对头,我在学校工作,要算教师教学成绩考核分,这学期出来的新规定:每个班的人数不一样,有的56人,有的57人,有的54人,有的52人,本校的考核制度要求以最少的班级的人数为基准(这里为52人),每个班的总成绩按从高到低排序,然后取出每个班的前52人,如果最后一名并列,则不取并列的,如果中间有并列的,则要取,总而言之,每个班只取52个人出来.现在想的就是用一条SQL语言来实现.
2013-03-18 22:07
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
取出每个班的前52人,如果最后一名并列,则不取并列的
也就是说有的班人数超出52 即使第53与52并列也只取到52对吧
前面讨论的已可解决你问题了
2013-03-18 22:17
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:0 
以下是引用djszyyc在2013-3-18 22:07:00的发言:

对头,我在学校工作,要算教师教学成绩考核分,这学期出来的新规定:每个班的人数不一样,有的56人,有的57人,有的54人,有的52人,本校的考核制度要求以最少的班级的人数为基准(这里为52人),每个班的总成绩按从高到低排序,然后取出每个班的前52人,如果最后一名并列,则不取并列的,如果中间有并列的,则要取,总而言之,每个班只取52个人出来.现在想的就是用一条SQL语言来实现.

如果这样,我觉得还是用编程的方法简单(我是指代码的可读性和可维护性更好)。思路是:用SELECT-SQL命令截出所有班别号,然后弄一个循环,分别找出前52人,然后拼凑到一个表文件中。这要比苦苦思索一条SQL命令好得多,也轻松得多。


[ 本帖最后由 taifu945 于 2013-3-19 08:32 编辑 ]
2013-03-19 08:30
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
回复 43楼 taifu945
说得好

授人以渔,不授人以鱼。
2013-03-19 10:51
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:396
帖 子:11713
专家分:43267
注 册:2006-5-13
得分:3 
就是有人追求用一条SQL命令来解决问题,甚至于多用一行命令都不行。盲目追求这样的效果未必是明智的。

活到老,学到老! http://www. E-mail:hu-jj@
2013-03-19 13:40
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:0 
关于取前三个人,还是取前三个成绩的问题,谈一点我本人的浅见。
我们单位也是要年终考评的,各个同事最终得到的考评分,前三名有100%年终奖,后三名为年终奖*80%
由于这人涉及到员工的切身利益,如果有同事间考评分相同,则按成绩取分,比如考评分=95的员工有2个,考评分=92的员工有3个,考评分=90的员工有4个,考评分=89的员工有6个,这种情况下,我们单位取“前三名”,会只考虑成绩,也就是 我们在这种情况下,“前三名”会取出9人(95分2人,92分3人,90分4人)。 如果只取前三个人,那么考评分=92的同事会有2个取不到,这显然对他们是不公平的。

这是第一种情况,分数相同的,按分数取,取“前三名”而不是前三人。
另一种情况,是在我们计算各分店销售额时取的,各分店月底的销售数据按销售类别分,只取前三种销量最高的产品来统计,
例如,A产品销量第一,B、C、D产品销量并列第二,E产品销量第三,
这时我们取“前三”,只考虑取前三条记录,即使销量相同,也只取三条记录,以本例来说,会取出A、B、C(或者会取ACD,或ABD),BCD中,总会有一条取不到了,不过没关系,因为这个时候取前三,只具有数学统计含义,取C与取D来统计数据,最终报表的结果并没有什么不同,所以,这个时候,就不必纠结分数相同的问题了。

总之,取“前三名”,还是取“前三条”记录的问题,要根据实际情况来定,灵活掌握,完全不必在这个问题上纠结。

[ 本帖最后由 厨师王德榜 于 2013-4-4 15:30 编辑 ]
2013-04-04 15:25
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
回复 46楼 厨师王德榜
有道理的
2013-04-04 17:30
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:0 
以下是引用厨师王德榜在2013-4-4 15:25:15的发言:

关于取前三个人,还是取前三个成绩的问题,谈一点我本人的浅见。
我们单位也是要年终考评的,各个同事最终得到的考评分,前三名有100%年终奖,后三名为年终奖*80%
由于这人涉及到员工的切身利益,如果有同事间考评分相同,则按成绩取分,比如考评分=95的员工有2个,考评分=92的员工有3个,考评分=90的员工有4个,考评分=89的员工有6个,这种情况下,我们单位取“前三名”,会只考虑成绩,也就是 我们在这种情况下,“前三名”会取出9人(95分2人,92分3人,90分4人)。 如果只取前三个人,那么考评分=92的同事会有2个取不到,这显然对他们是不公平的。

这是第一种情况,分数相同的,按分数取,取“前三名”而不是前三人。
另一种情况,是在我们计算各分店销售额时取的,各分店月底的销售数据按销售类别分,只取前三种销量最高的产品来统计,
例如,A产品销量第一,B、C、D产品销量并列第二,E产品销量第三,
这时我们取“前三”,只考虑取前三条记录,即使销量相同,也只取三条记录,以本例来说,会取出A、B、C(或者会取ACD,或ABD),BCD中,总会有一条取不到了,不过没关系,因为这个时候取前三,只具有数学统计含义,取C与取D来统计数据,最终报表的结果并没有什么不同,所以,这个时候,就不必纠结分数相同的问题了。

总之,取“前三名”,还是取“前三条”记录的问题,要根据实际情况来定,灵活掌握,完全不必在这个问题上纠结。

是的,关键是看统计的结果作何用处,这是操作前的一个指导方针问题。在这个指导方针下,才是后面的操作过程,但也比较重要,一旦把参照内容搞错,得出的结果将会背离指导方针。
2013-04-04 22:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-401080-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.855164 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved