2

我有各种表格来跟踪系统中创建的东西、销售、客户帐户等,它们都在上面创建了时间。我可以使用以下查询每天总结其中的任何一个:

select date(created_time), count(*) from customers group by date(created_time)

产生如下输出:

+--------------------+----------+
| date(created_time) | count(*) |
+--------------------+----------+
| 2012-10-12         |       15 |
| 2012-10-13         |        4 |

这可以完成工作,尽管它确实跳过了没有发生任何事情的日子。

但是我想做的是一次为多个表生成相同的东西,产生类似的东西:

+--------------------+--------------+------------------+
| date(created_time) | count(sales) | count(customers) |
+--------------------+--------------+------------------+
| 2012-10-12         |           15 |                1 |
| 2012-10-13         |            4 |                3 |

我可以为每个表单独运行查询并手动加入它们,但是跳过 0 天会使加入变得困难。

有没有办法在单个 mysql 查询中做到这一点?

4

1 回答 1

1

尝试这个:

SELECT created_time, SUM(customers), SUM(sales) 
FROM (SELECT DATE(created_time) created_time, COUNT(*) customers, 0 sales 
      FROM customers 
      GROUP BY created_time 
      UNION 
      SELECT DATE(created_time) created_time, 0 customers, COUNT(*) sales 
      FROM sales 
      GROUP BY created_time
     ) as A
GROUP BY created_time;
于 2012-12-26T18:11:06.673 回答