2011-04-22 75 views
0

我正在编写一个测验,并在SQLite数据库中记录单个答案。我的表具有下面的格式:SQLite分析光标数据

ID,会话,RightWrong
1,042102111244,0
2,042102111244,1
3,042102111244,1
4,042102111244,1
5, 042102111244,0
6,042102111412,0
7,042102111412,1
8,042102111412,0
9,042102111412,1

其中“会话”是指某个测验的开始时间为,每一行代表一个答案(0 =错误答案,1 =正确)。

我只关心“聚合”,即正确回答了多少个问题(每个测验有多少个问题中有&)。

所以我的 “梦想” 光标将是:

会议,RightAnswers,TotalNoOfQuestions
042102111244,3,5
042102111412,2,4

有没有办法来实现这一目标?我无法找出一个合适的查询(这当然不是一个编程问题,而是一个逻辑问题)。

目前,我只是在阅读完所有项目分成光标
Cursor cursor = db.query(MyDataSQLHelper.TABLE, null, null, null, null, null, null); ,以为我宁愿做一些“后处理”,但我不确定什么是最好的办法。

感谢您的帮助,
尼克

回答

2

一个简单的原始查询会是这样的:

Cursor cursor = db.rawQuery("select session, sum(rightwrong) as RightAnswers, count(rightWrong) as TotalNoOfQuestions from tablename group by session"); 

您将使用Group By所有行具有相同的会话结合在一起,然后用总和并计算功能以找出会话中的故障。注意“总和”这里只适用,因为正确的答案是1,错误的答案是0,如果你改变答案的记录方式,你将不得不改变查询一下。

我会尝试猜db.query电话是什么样子:

String[] columns = {"Session", "sum(RightWrong) as RightAnswers", "count(RightWrong) as TotalNoOfQuestions"; 
String[] groupBy = {"Session"}; 


Cursor cursor = db.query("tablename", columns, null, null, groupBy, null, null); 

我分隔字符串数组声明把它清理干净了一点,但我觉得应该作用是相同的。

+0

太棒了,非常感谢你:-)! – Nick 2011-04-22 01:51:26

0

您正在使用group by子句。

您正在使用 公共光标查询(字符串表,字符串[]列,字符串的选择, 的String [] selectionArgs两个,字符串GROUPBY,有字符串,字符串 ORDERBY)

前。 光标光标= db.query(MyDataSQLHelper.TABLE, 新的String [] { “会话”, “和(RightWrong)RightAnswers”, “计数(会议)TotalNoOfQuestions”}, 空, “会话”, 空, null);

您再试一次。