2

システム、販売、顧客アカウントなどで作成されたものを追跡するさまざまなテーブルがあり、それらはすべて時間を作成しています。次のクエリを使用して、これらのいずれかを 1 日単位で要約できます。

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 に答える