2017-04-12 31 views
0

我有相同的列名兩個獨立的表像這樣:Caculate平均時間使用2列從不同的MySQL表

T1:

request_submit_time | request_complete_time 
2017-04-12 13:20:23 | 2017-04-12 13:21:23 
2017-04-12 13:15:54 | 2017-04-13 13:10:54 

T2:

request_submit_time | request_complete_time 
2017-04-13 13:21:23 | 2017-04-15 13:30:23 
2017-04-14 13:15:54 | 2017-04-15 13:09:54 

我知道如何從單個表中獲得平均時間:

SELECT AVG(timestampdiff(HOUR,request_submit_time,request_complete_time)) AS average FROM tbl1; 

但我無法弄清楚如何獲得2個表格中2列之間的平均時間。

謝謝你的幫助。

回答

1

使用UNION ALL加入兩個表的結果集,然後計算:https://dev.mysql.com/doc/refman/5.7/en/union.html

SELECT AVG(timestampdiff(HOUR,request_submit_time,request_complete_time)) AS 
average FROM 
(
    (SELECT request_submit_time, request_complete_time FROM tbl1) 
    UNION ALL 
    (SELECT request_submit_time, request_complete_time FROM tbl2) 
) 

編輯 - MPEN是正確的。您必須使用UNION ALL,因爲UNION會刪除重複項。謝謝你。

+1

我想你想要'UNION ALL'。 'UNION'將會重複數據刪除,這會甩掉平均值。 – mpen

+0

謝謝!除了不得不將「AS平均值」移動到查詢的末尾,否則我得到了「每個派生表都必須有自己的別名」錯誤。 – user3282173