2009-06-30 146 views
1

我有兩個不同的表,即lead和click。我想查詢MySQL以獲得按日期排序的點擊和潛在客戶產生的佣金總和。根據MySQL中的日期計算兩個表的總和

導語:

id|date  |commission 
1|2009-06-01|400 
2|2009-06-01|300 
3|2009-06-03|350 

點擊:

id|date  |commission 
1|2009-06-01|1 
2|2009-06-03|2 
3|2009-06-03|1 

我想創建一個查詢,給我(如果可能的話也得到日期在沒有鉛或點擊已生成):

date  |commission click|commission lead|total commission 
2009-06-01|    1|   700|    701 
2009-06-02|    0|    0|    0 
2009-06-02|    3|   350|    353 

(日期實際上是在真正的數據庫日期時間。)

我想我必須結合:

SELECT count(*) as number_clicks, sum(click.commission) as sum_clicks, 
date(click.time) as click_date from click group by click_date order by click_date 

有了:

SELECT count(*)as number_leads, sum(lead.commission) as sum_leads, 
date(lead.time) as lead_date from lead group by lead_date order by lead_date 

但我不能讓他們一起工作。

+0

爲什麼我要編輯古老的問題?道歉。 – Strawberry 2016-08-18 14:26:40

回答

2

這不會得到零的日期,因爲你需要一個日期表或存儲過程來循環日期。一種方法是從聯合查詢(未經測試)中選擇:

SELECT commission_date, SUM(click_commission), SUM(lead_commission), SUM(total_commission) 
FROM (SELECT DATE(click.time) AS commission_date, click.commission AS click_commission, 
      0 AS lead_commission, click.commission AS total_commission 
     FROM click 
     UNION ALL 
     SELECT DATE(lead.time) AS commission_date, 0 AS click_commission, 
      lead.commission AS lead_commission, lead.commission AS total_commission 
     FROM lead) AS foo 
GROUP BY commission_date 
ORDER BY commission_date 
+0

得到「每個派生表都必須有自己的別名」,但在最後一個SELECT之後添加「AS foo」之後,GROUP就像問題那樣工作了。謝謝! – boingboing 2009-06-30 13:23:41