2016-06-13 56 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

相关问题