2016-03-08 197 views
1

我是SQL新手,我無法弄清楚如何計算兩個表中某個值的平均值。計算兩個表的平均值

我有一張表,它擁有世界上所有湖泊的信息 ,我有另一張桌子,包括世界上所有的海洋信息。

我想計算海洋和湖泊合併的平均深度。我知道以下幾點:

SELECT 
    AVG(depth) AS AvgDepthSeas 
FROM 
    sea 

這將使我獲得世界上海洋的平均深度。

SELECT 
    AVG(depth) AS AvgDepthLake 
FROM 
    lake 

這將使我獲得世界上所有湖泊的平均深度。

我只是不知道如何結合這兩個平均數來計算海洋+湖泊總和的平均值。我嘗試了不同的事情;計算海洋和湖泊的數量,以查看有多少海洋和湖泊,這樣我就可以合併平均數並將它們除以海+湖泊/湖泊的總和。

我只知道必須有一個更簡單的方法來解決這個問題。

回答

2

這是union all是非常方便的:

select avg(depth) 
from ((select depth from sea) union all 
     (select depth from lake) 
    ) sl; 
+0

感謝您解決我的問題,我理解您的解決方案,但爲什麼是'sl'。最後?我知道沒有它的代碼將無法正常工作我只是不明白爲什麼'sl'在那裏需要 – CodeBeginner12

+0

這就是語法的方式 - 如果你在MySQL中有一個子查詢,你必須給它一個別名,即使你從不引用別名。 –

0

@ CodeBeginner12,你再嘗試本來是這樣的:

select (sum(s.depth)+sum(l.depth))/(count(s.name)+count(l.name)) 
from seas s, lakes l 

戈登的解決方案是更清晰,更實用。