Mysql 按天列出的每月销售额比较
我正在使用一个表来存储每天的销售额,我想要一种方法来获取每天的销售额,并与上个月的同一天进行比较,如下所示: 我要每天的销售量 差不多Mysql 按天列出的每月销售额比较,mysql,Mysql,我正在使用一个表来存储每天的销售额,我想要一种方法来获取每天的销售额,并与上个月的同一天进行比较,如下所示: 我要每天的销售量 差不多 DAYa | SALESa | DAYb | SALESb 1 | 3 | 1 | 4 2 | 2 | 2 | 5 以此类推,但由于这个月只有7天,其余的日子将有0销售。。。 这是一张有所有销售人员的桌子。 像这样的 ID | DATE 1 | 2015-06-01 2 | 201
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次销售。。。剩下的只卖一次
不确定什么是创建图表的最佳方法,我应该使用两个查询还是只使用一个查询?这不完全是一个查询,但此版本将显示上个月销售(在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;
你能展示你的模式吗?你每月有一张表吗?用户是你的销售栏吗?表名是什么?第二个示例中的每一行都是销售吗?我们是否需要计算每个日期的条目数以获得每个日期的销售额?我看不出你的示例表和结果之间有任何关联。是的,每一行都是一笔销售,在2015-06-01日我卖出了一笔,只有一笔,如果2015-06-01日有两笔,那就是两笔销售……谢谢。。。有人知道我想要什么。。。我不得不将间隔时间从1个月改为31天,但一切都正常。。。非常感谢。