sqlite汇总值来自相同日期并返回1行

时间:2011-04-23 22:29:19

标签: android sql sqlite

我正在编写一个存储锻炼日期和燃烧卡路里的Android应用程序。下面是我表中数据的示例: 这是由:

返回的
SELECT month, day, calories FROM workouts ORDER BY year ASC, month ASC, day ASC LIMIT 12;

(month | day | calories)
3|2|714
3|3|945
3|4|630
3|10|446
3|16|396
3|20|255
3|22|108
3|23|112     
3|23|169
3|23|2160

我为上面写的代码是:

  public Cursor getLastTwelveDays(){
  Cursor c;
  String[] s = {KEY_MONTH, KEY_DAY, KEY_CALORIES};
  String order = KEY_YEAR + " ASC, " + KEY_MONTH + " ASC, " + KEY_DAY + " ASC LIMIT 12" ;
  c = db.query(WORKOUT_TABLE, s, null, null, null, null, order);
  return c;
}

我想将具有相同日期和月份的行组合成一行,如下所示:

3|2|714
3|3|945
3|4|630
3|10|446
3|16|396
3|20|255
3|22|108
3|23|2441    (112 + 169 + 2160)    

此外,如果它易于与android的查询功能一起使用会很好。

提前致谢。

3 个答案:

答案 0 :(得分:8)

您要寻找的是group by子句。使用SUM()方法获取每个日期的总卡路里。我认为group by子句应该在ORDER BY子句之前。

SELECT月,日,SUM(卡路里)FROM锻炼GROUP BY月,日

答案 1 :(得分:0)

听起来你想要一个子查询(即一个查询来计算每日卡路里的总和,在另一个获得每天卡路里总数的查询中)。

尝试查找QUERY和子查询示例。也许查询函数允许您将原始查询传递给它,以便进行您正在描述的更高级的查询。

答案 2 :(得分:0)

如果没有看到您的架构,请查看SUM和GROUP BY。