获取2列sqlite的差之和

时间:2018-12-19 06:47:13

标签: android android-sqlite

这个问题似乎有点令人困惑,我举一个例子:

表: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()+")";

但是我没有得到想要的结果。

1 个答案:

答案 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);