MYSQL表设计如下
rid 评分月份 评分人 被评分人 评分项 该项得分评分月份:多个月 1-12
评分项:多项1-4
得分:一项的得分1个月有多个评分人给被评分人打分
被评分人有多个
一次打分有多个打分项 想得到的是:
被评分人 在 该月 的 总得分 的 平均数
注:
总得分 为评分人 该月 给同一被打分人 的所有评分项 的和
平均数 为所有评分人 的 打分和 的平均值问题在于:
都是多对多啊 我都没头绪了我想的思路是:
先得到同一个月的所有打分记录
然后筛选出来 同一个被打分人的所有记录
然后再筛选出来 同一个打分人的所有记录那么同一个打分人的给分之和 就是给这个人的总分
所有打分人的总分求个平均数 就是这个人的本月的得分但是 这个SQL语句该怎么来啊,MYSQL!~~~~~~~~~求教!
对于我没说明白或不迷糊的 可继续提问。
rid 评分月份 评分人 被评分人 评分项 该项得分评分月份:多个月 1-12
评分项:多项1-4
得分:一项的得分1个月有多个评分人给被评分人打分
被评分人有多个
一次打分有多个打分项 想得到的是:
被评分人 在 该月 的 总得分 的 平均数
注:
总得分 为评分人 该月 给同一被打分人 的所有评分项 的和
平均数 为所有评分人 的 打分和 的平均值问题在于:
都是多对多啊 我都没头绪了我想的思路是:
先得到同一个月的所有打分记录
然后筛选出来 同一个被打分人的所有记录
然后再筛选出来 同一个打分人的所有记录那么同一个打分人的给分之和 就是给这个人的总分
所有打分人的总分求个平均数 就是这个人的本月的得分但是 这个SQL语句该怎么来啊,MYSQL!~~~~~~~~~求教!
对于我没说明白或不迷糊的 可继续提问。
解决方案 »
- 请教一个MYSQL的问题!
- 如何多表插入,按照插入数据的ID在插入附属一个表的信息
- PostgreSQL如何给一个类型为xml的字段建立索引
- 请教关于mysql直接拷贝的数据库导出的问题,提示1045,情况有点特殊
- 真诚请教大家关于MYSQL性能优化方案报表工具的问题
- sql 语句 大师帮帮 小弟!
- 请教高手mysql乱码问题。
- 各位大哥,我的计算机是INTEL的32位的,在哪能下到MYSQL呀?????
- 我用的是mysql-5.6.13-win32的数据库应该使用哪个版本的jdbc驱动
- 安装数据库时出现了问题,想哭
- 为什么关了数据库连接,还能输出$link呢?
- phpmyadmin 求插入(多表合并,查了一天资料。已经成功取出记录,求SQL语句插入数据表)
这个表 rid 评分月份 评分人 被评分人 评分项 该项得分设计的就有问题吧!
CREATE TABLE `b0130-csdn-score` (
`rid` int(11) NOT NULL AUTO_INCREMENT,
`month` varchar(10) DEFAULT NULL COMMENT '月份',
`scorer` int(11) DEFAULT NULL COMMENT '评分人',
`by_scorer` int(11) DEFAULT NULL COMMENT '被评分人',
`item` int(11) DEFAULT NULL COMMENT '评分项',
`score` int(11) NOT NULL DEFAULT '0' COMMENT '成绩',
PRIMARY KEY (`rid`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;INSERT INTO `b0130-csdn-score`(`month`,scorer,by_scorer,item,score) VALUES(1,1,2,1,30);
INSERT INTO `b0130-csdn-score`(`month`,scorer,by_scorer,item,score) VALUES(1,1,2,2,50);
INSERT INTO `b0130-csdn-score`(`month`,scorer,by_scorer,item,score) VALUES(1,1,2,3,70);
INSERT INTO `b0130-csdn-score`(`month`,scorer,by_scorer,item,score) VALUES(1,1,3,1,56);
INSERT INTO `b0130-csdn-score`(`month`,scorer,by_scorer,item,score) VALUES(1,1,3,2,26);
INSERT INTO `b0130-csdn-score`(`month`,scorer,by_scorer,item,score) VALUES(1,1,3,3,46);
INSERT INTO `b0130-csdn-score`(`month`,scorer,by_scorer,item,score) VALUES(2,1,2,3,45);
INSERT INTO `b0130-csdn-score`(`month`,scorer,by_scorer,item,score) VALUES(2,1,2,1,56);
INSERT INTO `b0130-csdn-score`(`month`,scorer,by_scorer,item,score) VALUES(2,1,3,3,23);
INSERT INTO `b0130-csdn-score`(`month`,scorer,by_scorer,item,score) VALUES(2,1,3,2,69);SELECT `month`,scorer,by_scorer,SUM(score),COUNT(*),sum(score)/COUNT(*)
FROM `b0130-csdn-score`
GROUP BY `month`,scorer,by_scorer;
是这样 我迷糊了但是有个问题 就是 sum(score)/COUNT(*) 这个算的被打分人的各个打分项的平均分我想要的是所有人打分项和的平均分 应该是 先把每个人给被打分人的各项和算出来 即SUM(score) 也是你上面的记录
SELECT `month`,scorer,by_scorer,SUM(score),COUNT(*)
FROM `b0130-csdn-score`
GROUP BY `month`,scorer,by_scorer;然后对查询出来的记录按照 月份,被打分人再次分组
再次求平均分sum(score)/COUNT(*) 这样才对但是怎么才能再次分组和求平均分呢 求教
FROM `b0130-csdn-score`
GROUP BY `month`,scorer,by_scorer) a GROUP BY `month`,by_scorer这样就行了