在MySql中对一周中的连续天进行分组

在MySql中对一周中的连续天进行分组,mysql,sql,group-by,Mysql,Sql,Group By,我希望能够按周对销售表进行分组,但只能按前x个天数进行分组 我可以很容易地按周分组 SELECT SUM( order_total_price ) AS total, WEEK(order_time,1) AS week_number FROM orders WHERE YEAR( order_time ) = 2014 GROUP BY WEEK( order_time, 1 ) 所以我想得到一周中每天的订单总数。 我需要每天运行7次这个查询 下面是一些示例数据。我从Mon Sun

我希望能够按周对销售表进行分组,但只能按前x个天数进行分组

我可以很容易地按周分组

 SELECT SUM( order_total_price ) AS total, WEEK(order_time,1) AS week_number
 FROM orders
 WHERE YEAR( order_time ) = 2014
 GROUP BY WEEK( order_time, 1 ) 
所以我想得到一周中每天的订单总数。 我需要每天运行7次这个查询

下面是一些示例数据。我从Mon Sun中选择了一系列总计

+-------------+-------------------+  
| order_time  | order_total_price |  
+-------------+-------------------+  
| 2014-03-03  |                20 |  
| 2014-03-04  |                25 |  
| 2014-03-05  |                30 |  
| 2014-03-06  |                15 |  
| 2014-03-07  |                20 |  
| 2014-03-08  |                15 |  
| 2014-03-09  |                30 |  
| 2014-03-10  |                20 |  
| 2014-03-11  |                15 |  
| 2014-03-12  |                10 |  
| 2014-03-13  |                25 |  
| 2014-03-14  |                30 |  
| 2014-03-15  |                25 |  
| 2014-03-16  |                10 |  
+-------------+-------------------+
这是我想要的结果

+----------+-------------+-------+   
| end_day  | week_number | total |   
+----------+-------------+-------+   
|        1 |         10  |    20 |  
|        2 |          10 |    45 |  
|        3 |          10 |    75 |  
|        4 |          10 |    90 |  
|        5 |          10 |   110 |  
|        6 |          10 |   125 |  
|        7 |          10 |   155 |  
|        1 |          11 |    20 |  
|        2 |          11 |    35 |   
|        3 |          11 |    45 |  
|        4 |          11 |    70 |  
|        5 |          11 |   100 |  
|        6 |          11 |   125 |  
|        7 |          11 |   135 |   
+----------+-------------+-------+  
end_day(1=Mon-7=Sun)
将是计算周总数的当天。请注意总计是一周中该天的总计。

SELECT
SELECT
    sum(order_total_price) AS total,
    WEEK(order_time,1) AS week_number, date_format(order_time,'%w') as day_of_week
FROM orders
WHERE YEAR(order_time) = 2014
    AND date_format(order_time,'%w') >= 1
    AND date_format(order_time,'%w') <= 2
    -- date_format(date,format)
    -- %w: Day of the week (0=Sunday, 6=Saturday)
GROUP BY WEEK(order_time,1), date_format(order_time, '%w')
总计(订单总价), 周(订单时间,1)作为周编号,日期格式(订单时间,'%w')作为周中的日期 从命令 其中年份(订单时间)=2014年 和日期格式(订单时间,'%w')>=1
和日期格式(订单时间,'%w')感谢您的努力!也许如果我给你一个我想解释的例子。不确定你在寻找什么,“但只有在前x个天数”可以用where子句完成。这是不是:“一周中每天的订单总数”要求将多周内每周第1天的所有订单相加?也许可以加上一个你预期产出的例子。我想我可能没有正确地解释我自己。我想按周对数据进行分组,但仅按x天数对周进行分组。所以我想按周一到周二,然后周一到周三,然后周一到周四等来分组,例如,一周的开始是周一,周末是周四。这就是为什么我需要运行查询7次。希望这有帮助。检查我的最新答案。然后查看date_format(),%w是一周中的一天,0是星期天。如果这就是你要找的,太好了。但是,下一次,请包括样本数据和预期结果。回答起来容易多了。我添加了一些样本数据和结果。我想我可能没有正确地解释自己。我想按周对数据进行分组,但仅按x天数对周进行分组。所以我想按周一到周二,然后周一到周三,然后周一到周四等来分组,例如,一周的开始是周一,周末是周四。这就是为什么我需要运行查询7次。希望这有帮助。