选择月份和月份中所有天数的总和

时间:2011-04-12 23:38:34

标签: java android sqlite

我的应用程序让用户将记录输入数据库。记录包含自动递增ID,日期(以mm-dd-yyyy格式的文本),数量(int)和一些其他字段。

我正试图抓住每个月的所有月份和总金额。所以我可以在我的应用程序中显示它们:2010年12月 - 90qty,2011年1月 - 45qty ......

我现在正在做的是,按ID,升序限制1和降序限制1选择日期以获取数据库中的第一个和最后一个日期。然后我分开了几个月和一年并计算了那里有多少个月,然后我做一个for循环并填充一个数组,所以我有12-2010,01-2011,02-2011 ......等然后另一个for循环查询日期在12-01-2011和12-31-2011等之间的总和(数量)数据库

我想知道......有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

CREATE TABLE test (
id integer primary key, date date, quantity integer);
INSERT INTO "test" VALUES(1,'2011-01-01',5);
INSERT INTO "test" VALUES(2,'2011-02-01',13);
INSERT INTO "test" VALUES(3,'2011-02-12',14);
INSERT INTO "test" VALUES(4,'2011-03-01',133);

您可以按月分组并总结这样的数量。

select strftime('%Y-%m', date), sum(quantity) 
from test
group by strftime('%Y-%m', date);

2011-01    5
2011-02   27
2011-03  133

答案 1 :(得分:1)

如果您可以将日期缩小到数据库中所需的粒度,那么您可以执行一次查询并迭代结果。这取决于您的data列的字段类型。例如,如果它是VARCHAR,您可以使用SUBSTRING来挑选您想要的部分(年份和月份)。如果它是DATETIME你可以做这样的事情:

SELECT strftime(date, '%m-%Y'), SUM(quantity)
FROM table GROUP BY strftime(date, '%m-%Y')
相关问题