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