选择月份以及该月所有天数的总和
我的应用程序让用户将记录输入数据库。这些记录包含自动递增的 ID、日期(以 mm-dd-yyyy 格式的文本)、数量 (int) 和一些其他字段。
我正在尝试获取所有月份以及每个月的总数量。这样我就可以在我的应用程序中显示它们,例如:2010 年 12 月 - 90qty,2011 年 1 月 - 45qty...
我现在要做的是,按 id 选择日期,升序限制 1 和降序限制 1 来获取第一个和最后一个日期在数据库中。然后我分割月份和年份并计算其中有多少个月,然后我执行一个 for 循环并填充一个数组,这样我就有 12-2010、01-2011、02-2011...等,然后另一个 for 循环进行查询sum(quantity) 的数据库,其中日期在 12-01-2011 和 12-31-2011 之间,等等。
我想知道......有更好的方法吗?
My application has users entering records into a database. The records contain an auto-incrementing id, date (as text in mm-dd-yyyy format), a quantity (int) and a few other fields.
I'm trying to grab all the months and the sum quantity for each month. So that I can display them in my app like: Dec 2010 - 90qty, Jan 2011 - 45qty...
What I'm doing now is, selecting date by id, ascending limit 1 and descending limit 1 to get the first and last dates in the database. I then split the months and year and calculate how many months are in there, then I do a for loop and fill an array so I have 12-2010, 01-2011, 02-2011...etc then another for loop to query the database for sum(quantity) where date is between 12-01-2011 and 12-31-2011, etc.
I'm wondering... is there a better way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以按月份分组并总结数量,如下所示。
You can group by months and sum up the quantities like this.
如果您可以将日期缩小到数据库中所需的粒度,那么您可以执行一个查询并迭代结果。这取决于您的
data
列的字段类型。例如,如果它是VARCHAR
,您可以使用SUBSTRING
来挑选您想要的部分(年份和月份)。如果它是DATETIME
你可以这样做:If you can narrow the date to the granularity you want in the database then you can do it one query and iterate over the results. It depends on what field type your
data
column is. If it's aVARCHAR
for example you can useSUBSTRING
to pick out the parts you want (year and month). If it's aDATETIME
you can do something like this: