asp+access,查询结果先排序,然后按比例分组再处理写回数据库。

sbifk123 2009-06-20 11:53:16
如题,详细如下:

表 yg , 表里有 bm(部门),name(姓名),df(得分),dj(等级),djf(等级分),month(月份),year(年份) 字段。

1、查询出表里符合条件的所有记录,按得分降序排序。

Set rs = Server.CreateObject("ADODB.Recordset")
sql="select * from yg where (month='"&month&"' and year='"&year&"') order by df desc"
rs.open sql,conn,1,3

2、取得所有记录数,

按比例分组,从上至下, 15% 25% 40% 15% 5% 共五组。

前 15%,同时判断这些记录的 df(得分) 是否大于 90,如果大于,则设定 dj(等级) 为 A ,djf(等级分) 为 5 ,写回数据库,
如果小于,则设定 dj(等级) 为 B ,djf(等级分) 为 4 ,写回数据库,

次 25%,同时判断这些记录的 df(得分) 是否大于 80,如果大于,则设定 dj(等级) 为 B ,djf(等级分) 为 4 ,写回数据库,
如果小于,则设定 dj(等级) 为 C ,djf(等级分) 为 3 ,写回数据库,

。。。 后面的依次类推。


想请教下,按比例分组的代码应该怎么写,还有如何对分组后的数据进行操作。非常感谢。

...全文
263 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
sbifk123 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 chinmo 的回复:]
我觉得你还是应善于他们勾通,了解实际意义
并不是说实际手工的东西,程序也是按那个步骤走!
[/Quote]

谢谢回复。跟他们沟通多次了。:)

我也没办法让他们详细解释这样考核的意义,因为人事的考核是公司内比较特殊的业务流程,得到的回答只能是公司规定,执行就好。


现在问题的关键是考核规则已经定了,不可能因为我的异议改变公司的考核规则。

首先分比例。 然后再参考得分判断。 最后,如果有分数相同但等级不同的情况则再调整。

他们首先考虑就是按比例来分,也就是说如果有人得分是92,但是已经超出了15%的人数比例,那他就是B等级,虽然他在90以上。

其次的才是在比例人数里,看是否符合得分的要求,够不够相应的等级分,够就留,不够就降等。

如果有多个人得分一样,但所在的比例分组不一样,那这些人的等级会调整为一样的(高的那个等级)。

他们手动计算就是按照这个规则来做的,我也只能在这个规则之内想解决办法了。

我可以不按照手动的步骤做,但是最后得到的结果一定是要符合这几个规则的。

只要最终得到的结果跟他们手动计算的一样,他们是不会理会程序用的什么算法用什么步骤的。
sbifk123 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 chinmo 的回复:]
手动评分比程序评分差别大了知道,程序你一定死一个比例就是那个比例走了!

即使存在也要以就高原则调整等级

这个根本没必要,如果加这么一个功能,一旦有这么一个功能实际相当于用分数评定,有没有那个比例都无所谓了!!
[/Quote]

就高原则跟按分数评定的实际效果是不一样地。。。。
toury 2009-06-23
  • 打赏
  • 举报
回复
chinmo说的是对的,这个考评规则有很大的漏洞:
比如你有100个人
按这个上至下, 15% 25% 40% 15% 5% 共五组来分的话
假设最后考评100个人都得100分,按照目前分组与等级分设置的就高原则,势必出现这样的情况:
40个人为A(15%肯定为A,25%就高后也定为A)
55个人为C(40%肯定为C,15%就高后也定为C)
5个人为E

从合情合理角度,应该是100人都是A;这就是chinmo说的按分数排;但按照LZ的规则就是上面我说的结果
不知道我理解的是否正确。


  • 打赏
  • 举报
回复
我先问,设定这个比例意义何在?
关键他有什么意义?是否没有其他方法可以代替他?
sbifk123 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 chinmo 的回复:]
可是你一按这个比例来设定程序,等级就不一样了,知道不
所以说你程序逻辑有问题
不能设定比例
[/Quote]

楼上的,呵呵。谢谢你的回复了。

如果得分相同等级不一样,需要用就高原则,再调整;

要不要设定比例是按需求者需求定的,首先确定比例,再参考分数调整,最后调整意外情况(如相同分数人应为相同等级)。

我想不出如果不定比例程序要咋写。。。。

等待你高见。

  • 打赏
  • 举报
回复
可是你一按这个比例来设定程序,等级就不一样了,知道不
所以说你程序逻辑有问题
不能设定比例
  • 打赏
  • 举报
回复
我觉得你还是应善于他们勾通,了解实际意义
并不是说实际手工的东西,程序也是按那个步骤走!
  • 打赏
  • 举报
回复
手动评分比程序评分差别大了知道,程序你一定死一个比例就是那个比例走了!

即使存在也要以就高原则调整等级

这个根本没必要,如果加这么一个功能,一旦有这么一个功能实际相当于用分数评定,有没有那个比例都无所谓了!!
sbifk123 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 chinmo 的回复:]
引用 25 楼 sbifk123 的回复:

引用 23 楼 chinmo 的回复:
我先问,设定这个比例意义何在?
关键他有什么意义?是否没有其他方法可以代替他?


这个规则是由人力资源部同事制定的,他们比较专业,肯定有他们的道理。

问题是现在按这个规则来考评肯定是出了问题?
做这样的东西得明白实际意义是什么
他合理不合理,如果不合理有没有相同的方法或者方式来实现

不了解清楚就弄只会增加自己工作量,而且还可能导致不符合实…
[/Quote]


他们按照这样的方式手动评分已经有半年了。。。
所以实际操作应该是没有问题的。
至于这样做规则的意义,人事部有他们的考虑,
不管合理不合理,现在公司的领导都满意,
我也觉得这种规则太复杂,但是没有话语权,只能想办法完成这个设定了。

另外,我只是觉得复杂,并没有觉得会出什么问题,
你们提出的分数相同但等级不同的情况也是不存在的(即使存在也要以就高原则调整等级)。
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 sbifk123 的回复:]
引用 23 楼 chinmo 的回复:
我先问,设定这个比例意义何在?
关键他有什么意义?是否没有其他方法可以代替他?



这个规则是由人力资源部同事制定的,他们比较专业,肯定有他们的道理。
[/Quote]
问题是现在按这个规则来考评肯定是出了问题?
做这样的东西得明白实际意义是什么
他合理不合理,如果不合理有没有相同的方法或者方式来实现

不了解清楚就弄只会增加自己工作量,而且还可能导致不符合实际情况的应用

sbifk123 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 toury 的回复:]
chinmo说的是对的,这个考评规则有很大的漏洞:
比如你有100个人
按这个上至下,  15%    25%    40%    15%    5%  共五组来分的话
假设最后考评100个人都得100分,按照目前分组与等级分设置的就高原则,势必出现这样的情况:
40个人为A(15%肯定为A,25%就高后也定为A)
55个人为C(40%肯定为C,15%就高后也定为C)
5个人为E

从合情合理角度,应该是100人都是A;这就是chinmo说的按分数排;但按照LZ的规则就是上面我说的结…
[/Quote]

拜托各位大哥能不能仔细看下。。。

后面已经申明了,如果得分相同等级不一样,需要用就高原则,再调整;

首先确定比例,

再参考分数调整,

最后调整意外情况(如相同分数人应为相同等级)。

sbifk123 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 chinmo 的回复:]
我先问,设定这个比例意义何在?
关键他有什么意义?是否没有其他方法可以代替他?
[/Quote]

这个规则是由人力资源部同事制定的,他们比较专业,肯定有他们的道理。
  • 打赏
  • 举报
回复
如果运用到实际地一些项目中,不太适合
从你这个来看,貌似一个是人事管理一样的软件
  • 打赏
  • 举报
回复
不觉得会出歧义吗?

为什么同样的分数,是他为B而另一些不为B呢?

  • 打赏
  • 举报
回复
我上面是按排序分组的了

自己想想吧
80
70
70
70
60
60
60
60
60
60
60
60
60
60
60

60
60
60
60


红色部分全部为B
下面的3个60却为C??
觉得合理吗?
sbifk123 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chinmo 的回复:]
逻辑明显错误,不符合逻辑

我来一个假设吧:
假如你只有100条数据

得分分别是:
80
70
70
70
60
60
60
....如此下降吧
按你说的,前面15%即15条数据中,凡是小于90都是B,那么以上都是B了,那么你下面来一个大于80的也为B,那么前面15条中这些小于80的也为B了
觉得合乎逻辑吗?
[/Quote]

感谢回复。

楼上的,我觉得没啥问题,就是要对数据排序分组后做两个判断而已,

首先按比例排序的,不管分数是多是少,都不会影响这个顺序。

其次添加个附加条件,满足的则在此等级,不满足的则降一个等级。就是说,如果所有人成绩都差,那就在差的里面挑好的。

请指教。
  • 打赏
  • 举报
回复
逻辑明显错误,不符合逻辑

我来一个假设吧:
假如你只有100条数据

得分分别是:
80
70
70
70
60
60
60
....如此下降吧
按你说的,前面15%即15条数据中,凡是小于90都是B,那么以上都是B了,那么你下面来一个大于80的也为B,那么前面15条中这些小于80的也为B了
觉得合乎逻辑吗?
sbifk123 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fsnow1203 的回复:]
没太看懂你的意思 如果你是想在排序后按先后比例分组 我有个思路
dim a1,a2,a3,a4,a5,i
i=0
a1=rs.recordcount*0.15'前百分之十五
a2=rs.recordcount*(0.25+0.15)'次百分之二十五
a3=rs.recordcount*(0.4+0.25+0.15)'...........
a4=rs.recordcount*(0.15+0.25+0.15+0.4)'..........
a5=rs.recordcount'..........
do while not rs.eof
i=i+1
if i <=a1 then
对前15%的处理
elseif i>a1 and i <=a2 then
次25%的处理…
[/Quote]

回4楼的,是这个意思,我试一下你的方法。谢谢。
sbifk123 2009-06-22
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 chinmo 的回复:]
9楼和18楼我的分析好好想想吧

这样的考核明显的就不合理了

[/Quote]

你没有仔细看我的回复。。。。

已经说明了,

“两个等级交界若出现在同分值员工之间,则这些同分值员工以就高原则评定等级”

就高原则评定,分数相同的人,必定等级也是一样的。
  • 打赏
  • 举报
回复
9楼和18楼我的分析好好想想吧

这样的考核明显的就不合理了
加载更多回复(11)

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧