Java 通过游标对数据库列进行统计?

Java 通过游标对数据库列进行统计?,java,android,statistics,android-cursor,Java,Android,Statistics,Android Cursor,我有一个光标查询数据库。我感兴趣的是从一列中获取所有数字,并对它们进行一些简单的统计(例如,平均值、标准偏差等),这些数据将显示给用户 我错过了这里的整个模式。我应该将所有值存储在一个数组中,比如说int[]数组中,然后进行操作吗?我唯一想到的是: int entries = cursor.getCount(); int[] array = new int[entries]; for (int i = 0; i < entries; i++) { cursor.moveToPos

我有一个
光标
查询数据库。我感兴趣的是从一列中获取所有数字,并对它们进行一些简单的统计(例如,平均值、标准偏差等),这些数据将显示给用户

我错过了这里的整个模式。我应该将所有值存储在一个数组中,比如说
int[]
数组中,然后进行操作吗?我唯一想到的是:

int entries = cursor.getCount();
int[] array = new int[entries];

for (int i = 0; i < entries; i++) {
    cursor.moveToPosition(i);
    array[i] = cursor.getInt(...);
}
但我一直觉得很糟糕。
此外,如果我需要计算更复杂的统计数据,情况可能会变得更糟。这种for循环是否可以以某种方式避免?还有其他正确的方法吗?

您可以使用sqlite的函数
AVG
来计算平均值。要计算
标准偏差
,可以使用函数
SUM
,并结合
AVG
。正如你在评论中正确指出的那样

SELECT SUM((column - subquery.avg) * (column - subquery.avg)) / (COUNT(column)-1) 
   FROM table, 
    (SELECT AVG(column) AS avg FROM table) AS subquery

应该这样做

您可能会在查询时获得值。Sqlite具有
AVG
功能。你应该检查一下它是否也可以在android中使用(应该可以)。@Blackbelt谢谢,很高兴知道。然而,我肯定需要计算的不仅仅是平均值,如果所有函数都可用,我还没有真正完成。我只是想知道
for
+
moveToPosition()
是否是标准方法。您列出了两种方法:平均值和标准偏差。意思很简单,你已经有了这个函数。要计算标准偏差,可以使用sum、avg和count来计算平方根的参数,@Blackbelt可能是我对SQLite一无所知,但是如果我需要(value[I]-average)^2的和,我如何对列值使用
sum(columnName)
?像
SUM((columnName-AVG(columnName))^2)
这样的东西有用吗?谢谢。只是那样稍微复杂一点,但你的思路是对的
SELECT SUM((column - subquery.avg) * (column - subquery.avg)) / (COUNT(column)-1) 
   FROM table, 
    (SELECT AVG(column) AS avg FROM table) AS subquery