我正在编写一个存储锻炼日期和燃烧卡路里的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的查询功能一起使用会很好。
提前致谢。
答案 0 :(得分:8)
您要寻找的是group by子句。使用SUM()方法获取每个日期的总卡路里。我认为group by子句应该在ORDER BY子句之前。
SELECT月,日,SUM(卡路里)FROM锻炼GROUP BY月,日
答案 1 :(得分:0)
听起来你想要一个子查询(即一个查询来计算每日卡路里的总和,在另一个获得每天卡路里总数的查询中)。
尝试查找QUERY和子查询示例。也许查询函数允许您将原始查询传递给它,以便进行您正在描述的更高级的查询。
答案 2 :(得分:0)
如果没有看到您的架构,请查看SUM和GROUP BY。