2016-06-13 44 views
-2

有人可以告訴我如何計算每個建築物的佔地面積百分比。我有兩張桌子:建築物和房間。在房間表每個房間都有和地區squre米:SQL根據來自不同表格的2列來確定百分比

Rooms Table 
Room Area Building FKey 
Room1 10 BK 
Room2 20 CK 

Building Table 
PKey Name 
BK Building1 
CK Building2 


Result 
Building area (%) 
Building 1 10% 
Building 2 30% 
+3

總建築面積在哪裏存儲? – eggyal

+0

百分比是如何計算的?這個問題並不明顯。 –

+0

沒有總建築面積。大樓裏有房間,在房間的桌子上。該表格在每個房間下面都有儲存區域。我想總結每個房間的總數,並在每個建築物上顯示它。 –

回答

0

上午我理解你希望每個房間建築的比例嗎?或者你想看看每棟建築的房間總數?

如果是後者,則需要綁定總建築面積。

如果前者,這樣的事情應該工作......你基本上需要計算每個建築物的總面積並將房間面積除以該值。

SELECT Building.Name, 
     Rooms.Name, 
    100.0 * Area/(SELECT SUM(R2.Area) FROM Rooms R2 WHERE R2.BuildingID = Rooms.BuildingID) AS Percentage 
FROM Rooms 
    INNER JOIN Building  
     ON Rooms.BuildingID = Building.BuildingID 

如果是後者,那麼這樣的事情(即使你沒有指定,總建築面積存儲在哪裏?假設在建表):

SELECT BuildingID, SUM(Rooms.Area)/Building.Area * 100.0 
FROM Rooms 
    INNER JOIN Building  
     ON Rooms.BuildingID = Building.BuildingID 
GROUP BY Building.BuildingID 
+0

那麼每個建築物都是100平方米? – oerkelens

+0

如果每棟建築物只有一個房間,則每個房間都是建築物的100%。 –

+0

在前面的例子中,兩個房間都會產生100%,這不是OP指定的。 – eggyal

0

假設我終於瞭解您要計算的百分比(每棟建築物的總面積/所有建築物的總面積),您可以嘗試如下所示:

SELECT Building.Name, 
     100.0 * Sum(Room.Area)/(SELECT SUM(R2.Area) FROM Rooms R2) 
     AS Percentage 
FROM Rooms INNER JOIN Building  
    ON Rooms.BuildingID = Building.BuildingID 
GROUP BY Building.Name 
+0

是的,這是正確的答案!非常感謝你!抱歉,我不清楚我的問題,這是我第一次來這裏! –

+0

您最好將您的相關子查詢加入到父項中,而不是讓MySQL爲每條記錄重複它。 – eggyal

相關問題