这个问题似乎有点令人困惑,我举一个例子:
表:id | begintimestamp |结束时间戳
1 | 10000 | 11000
2 | 20000 | 41000
现在我想做的id是找出(entimestamp-begintimestamp)所有行的差,然后找到所有行的总和。
如上表所示:
id的差异1-1000 和ID 2-21000的区别
所有行的总和为22000。
我尝试了此查询:
sqLiteDatabase.rawQuery("select sum(total) in (SELECT " +
"("+WorkoutDao.Properties.EndTimeStamp.columnName +"-"+
WorkoutDao.Properties.BeginTimeStamp.columnName+") as total FROM "
+ WorkoutDao.TABLENAME + " where " +
WorkoutDao.Properties.CauseId.columnName + " = " + causeData.getId()+")";
但是我没有得到想要的结果。
答案 0 :(得分:2)
您的查询似乎措词有误。我将从这个开始:
SELECT SUM(endtimestamp - begintimestamp)
FROM yourTable;
将一个字符串查询连接在一起不是很好,但是在这种情况下,由于它不从外部获取任何参数,因此应该是安全的。我可以根据您的问题中的内容建议以下Java代码:
String sql = "SELECT SUM(" + WorkoutDao.Properties.EndTimeStamp.columnName;
sql += " - " + WorkoutDao.Properties.BeginTimeStamp.columnName + ") ";
sql += "FROM " + WorkoutDao.TABLENAME;
sqLiteDatabase.rawQuery(sql);