2011-04-22 76 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);

您再試一次。