簡體   English   中英

選擇月份和月份中所有天數的總和

[英]Select month and sum for all days in month

我的應用程序有用戶將記錄輸入數據庫。 記錄包含一個自動遞增的id,日期(以mm-dd-yyyy格式顯示的文本),一個數量(整數)和其他一些字段。

我試圖獲取所有月份以及每個月的總數量。 這樣我就可以在我的應用中顯示它們,例如:2010年12月-90數量,2011年1月-45數量...

我現在正在做的是,按ID選擇日期,升序限制1和降序限制1以獲取數據庫中的第一個和最后一個日期。 然后我將月份和年份分開,計算其中有多少個月,然后執行for循環並填充數組,這樣我就得到了12-2010、01-2011、02-2011 ...等等,然后是另一個for循環進行查詢總和(數量)數據庫,其中日期在2011年12月1日至2011年12月31日之間,依此類推。

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

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

如果可以將日期范圍縮小到數據庫中所需的粒度,則可以執行一次查詢並遍歷結果。 這取決於您的data列是哪種字段類型。 例如,如果是VARCHAR ,則可以使用SUBSTRING選擇想要的部分(年和月)。 如果是DATETIME ,則可以執行以下操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM