Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

多个题目多个答题者求均值问题

伴山风而行  发表于:2013-09-19 12:16:54  
复制

 请教个问题,我要统计满意度,但可能有多个题目,有多个人回答,题目数量和人的数量不定,为便于统计每道题的平均分和总的满意度平均分,是不是应该将题目作为列名?

列为:题目1,题目2,题目3......,行为自动编号,代表答题者。

但这样一来,算每道题的平均分简单,select avg(题目)即可,但怎么算总的平均分啊,总不能每次还要把公式调整来调整去吧?因为题目数量不定。

我能想到的就是 (avg(题目1)+avg(题目1)+...)/题目个数,但题目个数不定,每次是不是还得把这个公式调整一下才能行啊?否则没有对应题目的列为空,应该会影响平均值吧?

或者有没有什么办法可以自动不统计数值为空的题目列?

大菜鸟向大家求助了!先行谢过!


 

Top
煮江品茶 发表于:2013-09-19 17:20:40

一、数据表设计如下:

试卷表:试卷ID(主键),标题,考试日期

试题表:试题ID(主键),试题类型,题干,标准答案,标准分,试卷ID(外键)

考生表:考生ID(主键),考号,姓名,性别,身份证号

答题表:答题ID(主键),考生ID(外键),试题ID(外键),答案,得分


二、平均分用查询得到。

所谓平均首先要确定的是分母,也就是说以什么东西做分母来求平均值。

求试题的平均分以答题人数做分母,求试卷的平均分以试卷份数做分母,求几次考试的平均分以考试次数做分母。

由此看出平均的层面和角度不一样,其分母也是变化的,所以抓住分母就抓住了平均的要害。



伴山风而行 发表于:2013-09-19 17:45:05

感谢管理员的回答,学习了!不过我现在要做的是两份统计工作,一份是调查问卷,一份是试题,试题可以使用您建议的方案。

我想设计一个access的模板,可以对今后多次的调查问卷或试题进行自动统计。

比如,调查问卷中,满意度调查,参与调查人员可以评分1、2、3、4、5,同时,题目可以有题目1、题目2、题目3,也可以更多题目,我想按题目进行平均分统计,所以自然题目应该作为access表格的列项。

但问题就来了,题目的个数是不固定的,我写模板的时候可以事先把公式写好 (avg(题目1)+ avg(题目2)+ avg(题目3))/3就可以得到满意度调查的总平均分,但题目个数是变化的,下次可能有10个题目,我岂不是要再把公式调整为(avg(题目1)+...+avg(题目10))/10才行?

我的意思是有没有什么方法,一次就把命令写好,比如最多就只有10个题目,我在表格里录入数值录了几个题目,就能自动计算这几个题目各自的平均分以及总平均分,而不是把所有这十个题目算平均分(因为如果没有后面的题目,如果还是算10个题目的平均分的话会造成分值的低估,因为题目数被高估了)。

不知道我的提问是否表述清楚了?

难道是我太偷懒了,只能每次改命令来适应题目的变化吗?



zch 发表于:2013-09-19 17:51:01

一看就是老汉考试考多了,开个玩笑,祝中秋快乐

楼主这个是统计满意度用的,一般思路是这样:设计几个问题,让别人回答评分:如极满意5分,满意4分,一般3分,差2分等等。将每道题的分数加起来,除以回答的人数,就可以得出每题的平均分,最后将每道题的平均分加起来除以总题数就是总平均分了。

表设计:题目ID,调查人ID,得分

设计三个查询:

第一个查询排除数据为空的调查表

SELECT 调查表.题目ID, 调查表.调查人ID, nz([得分]) AS 分数
FROM 调查表
WHERE (((nz([得分]))<>0));
第二个查询:根据第一个查询求平均值

SELECT 查询1.题目ID, Avg(查询1.分数) AS 分数之平均值
FROM 查询1
GROUP BY 查询1.题目ID;

第三个查询:根据第二个查询再求平均值

SELECT Avg(查询2.分数之平均值) AS 总平均分

FROM 查询2;

 



伴山风而行 发表于:2013-09-20 10:10:31

感谢zch的指导,我按照你的思路开始设计查询,结果到查询2的阶段进行不下去了,因为总是报错,我查询1中明明有大类ID、题目ID等字段,到查询2中总是告诉我“试图执行的查询中不包含作为聚合函数一部分的特定表达式'大类ID' (或题目ID)”,请教一下是什么原因?

大类ID,题目ID也不是什么聚合函数啊。请参考下图,请大虾们点拨迷津!

先行谢过!



伴山风而行 发表于:2013-09-20 10:32:50

自己试验成功!庆祝一下。



总记录:5篇  页次:1/1 9 1 :