茶余饭后 发表于 2014-11-7 12:00

javaWeb---员工考核打分功能(详细看正文)

人事系统,员工考核打分模块:部门内部打分,一个部门有20人,相互打分。打完分数,提交到数据库。打分的功能做完了,存放分数的表为ro_score_kh(部分字段如下):

 主键            考核人员id 被考核人员姓名   被考核人员id    品德标准分     能力标准分
KHSCOREID    KHRYID         BKHRYXM          BKHRYID     PDBZF        NLBZF
       
               ***           张三              10001         6           9
               ***           张三              10001         7           10
               ***          张三          10001         8           10
               ***           张三              10001         9           10
                 ***             李四              100021          6           9
               ***             李四              100021          7           9
                 ***             李四              100021          8           10
                 ***             李四              100021          9             10

考核人是在数据库中加密的,被考核人存放的是id和姓名,部门有20个员工的话,那么一个人就有19条数据。
那么问题来了,分数统计怎么弄?上面,张三有四条数据,我统计他的分数,每一项去掉一个最高,去掉一个最低,求和算平均:
品的标准分:(7+8)/2=7.5分。sql语句怎么写?要求前台页面展现出部门20个人的分数(去掉最高和最低之后的平均分)

admin 发表于 2014-11-7 14:52

CREATE TABLE `score` (
   `KHSCOREID` int(11) NOT NULL AUTO_INCREMENT,
   `KHRYID` int(11) DEFAULT NULL,
   `BKHRYXM` varchar(20) CHARACTER SET latin1 DEFAULT NULL,
   `BKHRYID` int(11) DEFAULT NULL,
   `PDBZF` int(11) DEFAULT NULL,
   `NLBZF` int(11) DEFAULT NULL,
   PRIMARY KEY (`KHSCOREID`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC

sql :SELECT   BKHRYXM,(SUM(NLBZF)- MAX(NLBZF)-MIN(NLBZF))/(COUNT(*)-2) FROM score GROUP BY BKHRYID

茶余饭后 发表于 2014-11-7 14:56

admin 发表于 2014-11-7 14:52
CREATE TABLE `score` (
   `KHSCOREID` int(11) NOT NULL AUTO_INCREMENT,
   `KHRYID` int(11) DEFAULT ...

谢谢小染,很有帮助!
页: [1]
查看完整版本: javaWeb---员工考核打分功能(详细看正文)