2010-03-29 45 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,答案