我使用表来按日存储销售额,我想要一种方法来获取每天的销售额并与上个月的同一天进行比较,如下所示:
我想要每天的销售数量
之类的东西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个查询还是只有一个方法?
答案 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;