我试图输出一张表,该表读取利润表并返回过去一周中每天的总数。实施例
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天),并使用结果集加入它们以避免在没有销售的日子里出现空行,但即使这样结果也是如此(它仍然会跳过所有日子没有记录)。
有关如何解决这个问题的任何建议吗?