我需要真正的专业 DBA 帮助!我找不到在日期表上针对销售数据表使用 LEFT JOIN、UNION、UNION ALL 或 IFNULL(salesblah, 0) 的合理解决方案。由于销售代表可能存在差距,因此单独运行对销售数据的查询已经结束。当然,我可以在 PHP 中创建一个数组来按日期对数据求和,但必须有一个我看不到的优雅解决方案,这个个人挑战让我筋疲力尽。必须有一个简短而甜蜜的解决方案。
在服务器上使用 MySQL 5.5.15 时,销售数据的摘录(当前为 800,000 行并且每天都在增长)如下所示:
Rep Date QtyOrdered PriceEach
--------------------------------------------------
1 2011-06-05 4 1457.23
1 2011-08-01 1 3342.54
1 2011-08-11 12 112.23
2 2011-05-02 3 2654.23
2 2011-08-23 22 423.43
. ... ... ...
另一个表只是从 2000-01-01 到 2034-12-31 的一列日期
使用(或不使用)日期表,当我在查询中调用 rep 1 时,我怎样才能得到这个结果:
YYYY-MM Total Sales
------------------------
2010-08 0
2010-09 0
2010-10 0
2010-11 0
2010-12 0
2011-01 0
2011-02 0
2011-03 0
2011-04 0
2011-05 0
2011-06 5828.92
2011-07 0
2011-08 4960.14
我真希望能把这本未删节的粗话书收起来。谢谢你的才华。
编辑: Derek 的左连接解决方案省略了非零月份。Nerf 的子查询方法总和为一个月。我相信是 GROUP BY 正在扼杀非零月份。
谢谢!我相信最简单的课程是让 PHP 通过数组运行结果。最终,这是通过 GD 构建一个几个月范围内的图表,混合解决方案可能会在该部分中节省一步。
再次感谢你!