2010-03-29 59 views
2

我有一张包含调查结果的数据表,我想对这些数据进行一些计算。数据结构有点像这样:(忽略所有的数据是相似的,我剪切和粘贴的所有行)数据表格中的计算

____________________________________________________________________________________ 
| group |individual |  key   |  key   |  key   | 
|  |   |subkey|subkey|subkey|subkey|subkey|subkey|subkey|subkey|subkey| 
|  |   |q|q|q |q |q |q|q|q |q|q|q |q |q |q|q|q |q|q|q |q |q |q|q|q | 
|-------|-----------|-|-|--|--|---|-|-|--|-|-|--|--|---|-|-|--|-|-|--|--|---|-|-|--| 
| 1 | 0001  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
| 1 | 0002  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
| 1 | 0003  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
| 2 | 0004  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
| 2 | 0005  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
| 3 | 0006  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
| 4 | 0007  |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 |1|7|5 |1 |3 |1|4|1 | 
------------------------------------------------------------------------------------ 

所以,每一个人属于一组,并回答了一些问题。这些问题总是分组在键和子密钥中。

是否有任何简单的方法来计算平均值,偏差和类似的基础上的分组。 喜欢的东西

public float getAverage(int key, int individual); 
float avg = getAverage(5,7); 

我觉得我问的是这将是构建在C#中的数据,使之尽可能容易一起工作的最好方法? 我已经开始为每个实体创建类,但是我在某个地方感到困惑,有些东西停止工作。因此,在继续沿着这条道路前,我想知道是否还有其他更好的方法来做到这一点?

(每一个人也可以描述变量,如agegroup和这样的,但是这不是对基本功能很重要。),要求从数据库中的数据时

我们目前的解决方案内嵌做所有的计算中查询。这有效,但速度很慢,查询数量等于问题*个人+密钥*个人,如果个人查询可能会很多。

有什么建议吗?

回答

0

我怀疑你将通过将计算从数据库移动到应用程序来获得很大的改进。

我会建议看看数据库设计,看看你是否可以通过规范化和增加索引来改进它。大多数数据库都附带可根据给定查询进行设计建议的工具。然后看看你正在运行的查询是否有更有效的方式来编写查询。我亲眼看到将O(n)重写为O(log n)的查询。如果您需要该帖子的帮助,尽可能多地进行设计和查询,因为您可以随心所欲地进行分享。

0

平均值,标准偏差和其他一些东西可以通过对数据进行一次扫描并累计计数,总和以及数据点的平方和来计算。在计算机出现之前,通过在所有卡片上打出所有数据,并通过卡片机(通过电线插入板卡编程)运行,然后累计这些总数,然后进行计算,这一点就被利用了。

这是一个无聊的历史课程,只是它说明您可能能够从数据库中按组来半按总结数据。

它还将在描述性(组)列上设置索引。

0

在表中名为“q”的列下列出的值是否类似1,7,5代表实际答案或正确答案的数量?

无论如何,你可以使用一个数据表具有以下字段来组织数据:

群ID,IndividualID,的KeyID,SubKeyID,QuestionID,答案