每月销售比较

时间:2015-07-07 23:02:53

标签: mysql

我使用表来按日存储销售额,我想要一种方法来获取每天的销售额并与上个月的同一天进行比较,如下所示:

我想要每天的销售数量

之类的东西
DAYa  | SALESa | DAYb  | SALESb
1     | 3      | 1     | 4
2     | 2      | 2     | 5
等等,但由于这个月只有7天,其余时间将有0个销售... 它的一张桌子全部销售。 这样的事情。

ID | DATE        
1  | 2015-06-01  
2  | 2015-06-02  
3  | 2015-06-02  
4  | 2015-06-02  
30 | 2015-07-01  
40 | 2015-07-05 

所以在2015-06-02那天我有3次销售......剩下的只有一次销售。

不确定最好的方法是什么,所以我可以创建一个图表,我应该使用2个查询还是只有一个方法?

1 个答案:

答案 0 :(得分:0)

这不完全是1个查询,但此版本将显示上个月销售额(在a列中)当前月份的销售额(在b列中),即使是日期没有销售。

CREATE TABLE sales_totals AS SELECT `date`, COUNT(*) AS total FROM sales GROUP BY `date`;

SELECT DAY(DATEa) AS DAYa, SALESa, DAY(DATEb) AS DAYb, SALESb
FROM (
    SELECT s1.`date` AS DATEa, s1.total AS SALESa, s2.`date` AS DATEb, s2.total AS SALESb
    FROM sales_totals s1 LEFT JOIN sales_totals s2 ON DATE_ADD(s1.`date`, INTERVAL 1 MONTH) = s2.`date`
    UNION
    SELECT s3.`date` AS DATEa, s3.total AS SALESa, s4.`date` AS DATEb, s4.total AS SALESb
    FROM sales_totals s3 RIGHT JOIN sales_totals s4 ON s3.`date` = DATE_SUB(s4.`date`, INTERVAL 1 MONTH)
) x
WHERE YEAR(DATEb) = YEAR(NOW()) AND MONTH(DATEb) = MONTH(NOW());

DROP TABLE sales_totals;