Sql Query - 从今天第1天开始按月分组

时间:2014-08-11 12:39:41

标签: mysql sql

我每天都有不同分支机构的销售额记录集。 例如

Date             Amount      Branch
01/01/2014         30          A
01/01/2014         30          B
01/02/2014         40          A
01/02/2014         40          B
01/03/2014         30          A
01/03/2014         30          B
up to feb,mar,apr,may,jun,jul,aug

我想要实现的是根据今天的日期每月对记录进行分组。

例如今天是08/11/2014。范围应该是一个月的第一天" 1"然后我会选择今天的11天。因此所有月份的范围是1-11。见下面的样本。

Date Range for query monthly
01/01/2014-01/11/2014
02/01/2014-02/11/2014
03/01/2014-03/11/2014
04/01/2014-04/11/2014
05/01/2014-05/11/2014
06/01/2014-06/11/2014
07/01/2014-07/11/2014
08/01/2014-08/11/2014

将此日期范围分组并获得总销售额的总和。

请帮忙

2 个答案:

答案 0 :(得分:3)

这应该完成大部分工作:

  SELECT MONTH(date), SUM(amount)
    FROM table_name
   WHERE DAY(date) <= DAY(CURDATE())
     AND date >= YEAR(CURDATE())
GROUP BY MONTH(date);

<强>更新

对于3个字母的月份标签,您也可能需要ORDER BY来确定:

  SELECT DATE_FORMAT(date,'%b'), SUM(amount)
    FROM table_name
   WHERE DAY(date) <= DAY(CURDATE())
     AND date >= YEAR(CURDATE())
GROUP BY MONTH(date)
ORDER BY MONTH(date);

答案 1 :(得分:2)

您应该能够通过使用以下MySQL查询来实现您想要的目标:

select sum('amount') from 'some_table'
    where dayofmonth('sell_date') >= 1
        and dayofmonth('sell_date') < dayofmonth(currdate())
    group by month('sell_date');

我希望它有效,没有一些数据库可供测试。

您最终还可以通过分支进行分组,方法是在查询的分号前添加额外的, 'branch'