Mysql 获得7天的每日总销售额

Mysql 获得7天的每日总销售额,mysql,sql,Mysql,Sql,我正在尝试获取过去7天的日期和总和。我正在尝试此代码,并获得日期空值和每日销售0.00 我知道如何获得日期和每日总销售额。我想得到结果 date daily_sale 2013-01-29 500.00 2013-01-28 500.00 2013-01-27 500.00 2013-01-26 500.00 ... 2013-01-23 500.00 来自MySQL 所以把它改成 SELECT CURDATE( ),DATE_SUB( CURDATE() , IN

我正在尝试获取过去7天的日期和总和。我正在尝试此代码,并获得日期空值和每日销售0.00

我知道如何获得日期和每日总销售额。我想得到结果

date       daily_sale    
2013-01-29 500.00
2013-01-28 500.00
2013-01-27 500.00
2013-01-26 500.00
...
2013-01-23 500.00
来自MySQL

所以把它改成

    SELECT CURDATE( ),DATE_SUB( CURDATE() , INTERVAL 7 DAY ) AS weekEndDate, 
           `date` , SUM( COALESCE(`daily_sale`,0 ) ) AS weekly_sale
    FROM tbl_sale
    GROUP BY weekEndDate
    LIMIT 0 , 30
注:

date是mysql保留关键字,所以将其包装在` SUM的语法是SUMcolumn\u name,您的列名是daily\u sales 您可以尝试使用interval-7天:

不确定为什么between不起作用,请查看以下内容:


如果第一个日期表达式需要是较低的,正如@diEcho的回答所示,那么现在需要将表达式中的第二个术语设置为,而不是第一个。

您应该使用最短的日期“中间第一个”命令,因此现在必须设置为最后一个

SELECT
  date,
  IFNULL( SUM( total ), 0 ) AS daily_sale
FROM sales
WHERE date BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) and NOW()
或者,如果您需要每天的统计数据:

SELECT
  DATE(`date`),
  IFNULL( SUM( total ), 0 ) AS daily_sale
FROM sales
WHERE date BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) and NOW()
group by DATE(`date`)

样本数据和期望输出在哪里?+1,问题是li'l bit trickySame date NULL和daily_sale 0.00尝试使用SELECT date,IFNULLSUMtotal,0作为daily_sale FROM sales,其中date介于现在和date_ADDNOW之间,间隔7天,但同一日期为空,销售0。00@Saleen请尝试使用coalesce和interval-7天,从NowWear开始的最后7天,但相同:日期为空,销售为0。00@Saleem这里我已经更新了SQlfiddle演示,请看一看并发表评论。我使用了保留关键字指定的日期。现在它的文字是:D感谢您几个月来我使用这个日期>=现在的日期,间隔12个月,它工作了。谢谢你的帮助:D
SELECT  date, SUM(Coalese(total,0)) AS daily_sale
FROM yourtable
WHERE date BETWEEN NOW()  AND DATE_ADD(NOW(), INTERVAL -7 DAY)
select dates, sum(coalesce(daily_sale,0)) as total
from sales
where dates <= NOW()
and dates >= Date_add(Now(),interval - 7 day)
group by dates
;

|                          DATES | TOTAL |
------------------------------------------
| January, 23 2013 00:00:00+0000 |   500 |
| January, 24 2013 00:00:00+0000 |   500 |
| January, 27 2013 00:00:00+0000 |  1500 |
| January, 28 2013 00:00:00+0000 |  1000 |
| January, 29 2013 00:00:00+0000 |   500 |
SELECT
  date,
  IFNULL( SUM( total ), 0 ) AS daily_sale
FROM sales
WHERE date BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) and NOW()
SELECT
  DATE(`date`),
  IFNULL( SUM( total ), 0 ) AS daily_sale
FROM sales
WHERE date BETWEEN DATE_SUB(NOW(), INTERVAL 7 DAY) and NOW()
group by DATE(`date`)