获取过去7天的利润列表,包括没有销售的天数

时间:2015-12-01 15:54:44

标签: mysql join group-by data-warehouse

我试图输出一张表,该表读取利润表并返回过去一周中每天的总数。实施例

profits:
id  timestamp_sell     profit_unit  profit_quantity
1   2015-11-10 08:00:01    20         3  
2   2015-11-09 07:05:00    10         3
3   2015-11-06 11:25:03    20         3
4   2015-11-10 23:00:02    30         1

应该输出如下内容:

date ----    profit made
2015-11-06   60
2015-11-07   0
2015-11-08   0
2015-11-09   30
2015-11-10   90

起初我写了这样的话:

CREATE TEMPORARY TABLE IF NOT EXISTS temp(
dates DATETIME NOT NULL
);
INSERT INTO temp( dates ) 
VALUES (
DATE_ADD( NOW( ) , INTERVAL -1
DAY )), (
DATE_ADD( NOW( ) , INTERVAL -2
DAY )), (
DATE_ADD( NOW( ) , INTERVAL -3
DAY )) , (
DATE_ADD( NOW( ) , INTERVAL -4
DAY )) , (
DATE_ADD( NOW( ) , INTERVAL -5
DAY )), (
DATE_ADD( NOW( ) , INTERVAL -6
DAY )) , (
DATE_ADD( NOW( ) , INTERVAL -7
DAY ));

select date(profit.timestamp_sell), sum(coalesce(profit.profit_unit*profit.quantity_profit,0)) as total
from profit
right join temp ON DATE(temp.dates) = DATE(profit.timestamp_sell)
where date(profit.timestamp_sell) <= NOW() 
and date(profit.timestamp_sell) >= Date_add(Now(),interval - 7 day)
group by date(timestamp_sell)

我创建了一个临时表,其中包含我需要的所有日期(最近7天),并使用结果集加入它们以避免在没有销售的日子里出现空行,但即使这样结果也是如此(它仍然会跳过所有日子没有记录)。

有关如何解决这个问题的任何建议吗?

0 个答案:

没有答案