【发布时间】:2017-10-14 21:57:59
【问题描述】:
我正在查询数据库以获取过去 24 小时内输入的值的游标。我可以查询并获取我想要的 A_VALUE 列的所有值,但我无法弄清楚如何或在何处正确编写子查询以获取 A_VALUE 列与 where 子句参数的总和并获取其值。任何想法将不胜感激。 (零编码背景,我正在从这个网站和其他网站学习一切)
//获取过去 24 小时内值的当前代码是:
String[] projection = {
DrinkContract.DrinkEntry._ID,
DrinkContract.DrinkEntry.COLUMN_A_VALUE,
DrinkContract.DrinkEntry.COLUMN_TIME_DATE};
//code to query databse for last 24 hours
String selection = DrinkContract.DrinkEntry.COLUMN_TIME_DATE + " BETWEEN strftime('%s', 'now', '-1 day') AND strftime('%s','now') ";
Cursor dayCursor = getContentResolver().query(
DrinkContract.DrinkEntry.CONTENT_URI, // Provider content URI to query
projection, // Columns to include in the resulting Cursor
selection, // selection clause
null,
DrinkContract.DrinkEntry.COLUMN_TIME_DATE); // Default sort order*/
if (dayCursor == null || dayCursor.getCount() < 1) {
return;
}
// Proceed with moving to the first row of the cursor and reading data from it
while (dayCursor.moveToNext()) {
int aValueColumnIndex = dayCursor.getColumnIndex(DrinkContract.DrinkEntry.COLUMN_A_VALUE);
int drinkTimeDateColumnIndex = dayCursor.getColumnIndex(DrinkContract.DrinkEntry.COLUMN_TIME_DATE);
// Extract out the value from the Cursor for the given column index
double aValue = dayCursor.getDouble(aValueColumnIndex);
System.out.println("The total a value is " + aValue);
【问题讨论】:
-
总和是单个值,是从多行计算的。查询中其他两列的值应该是多少?
-
我不需要其他列的总和。从我读过的内容来看,它应该像在 SELECT 或 WHERE 子句中添加 sum(DrinkContract.DrinkEntry.COLUMN_A_VALUE) 或 total(DrinkContract.DrinkEntry.COLUMN_A_VALUE) 一样简单,以获得该特定列的总和或总计,但我可以似乎没有任何版本的工作。感谢您的回复
-
请提供一些示例数据和您想要的输出。 (请参阅How to format SQL tables in a Stack Overflow post? 了解如何添加。)
-
哦,伙计。终于让它工作了。感谢 CL 的回复。我的大脑终于把 2 和 2 放在了一起。对于任何有同样问题的人。我将此添加到投影线: String[] projection = { DrinkContract.DrinkEntry._ID, DrinkContract.DrinkEntry.COLUMN_TIME_DATE, "total("+DrinkContract.DrinkEntry.COLUMN_A_VALUE+") AS totalA "};然后用这个查询列总数: int aValueColumnIndex = dayCursor.getColumnIndex("totalA");