2014-04-18 44 views
0

我有2個SQL表是這樣的:的SQL請求,進入2個表,以獲取每個行的百分比

___Rooms:

ROO_Id ROO_Number 
1   101 
2   201 

___Bookings:

BOO_Id BOO_RoomNumber 
1   1 
2   1 
3   2 

我想以每個房間的百分比回顯一張桌子。

BOO_RoomNumber percentage count 
101   66%   2 
201   33%   1 

謝謝。

+0

您需要更具體的關於你」已經完成了,你掛了。您如何爲特定房間預訂房間?在'bookingings.roomId'和'rooms.id'上加上'INNER JOIN'?或者以其他方式?你是否想要一種直接從sql查詢中獲得這種結果的方法,或者在應用程序層中執行此操作可以嗎? –

回答

0

下面是答案:

修訂

select r.ROO_Number BOO_RoomNumber, ((ifnull(cnt_book,0)*100)/(select count(*) from Bookings)) percentage, ifnull(cnt_book,0) `count` 
from Rooms r left join (select BOO_RoomNumber, count(*) cnt_book 
      from Bookings 
      group by BOO_RoomNumber) cnt on r.ROO_Id=cnt.BOO_RoomNumber 

工作SQLFiddle

+0

謝謝,我已更新我的問題以避免誤解。你能否更新你的答案?這將是一個好的。 – user3504260

+0

嗨,@ user3504260。我應該更新哪些答案?跟你想要的不一樣嗎? (除了'%'符號和十進制小數百分比,小數點後兩位) –

+0

您可以做的字段名稱修改。不需要重新創建小提琴。 –

0

嘗試使用此:

SELECT r.id as BOO_RoomNumber, ((booked/(select count(id) from BOOKINGS))*100) as percentage, booked as `count` 
FROM ROOMS as r 
LEFT JOIN 
(
SELECT count(id) as booked, roomId 
FROM BOOKINGS 
GROUP BY roomId 
) as b on b.roomId=r.id 
+0

它不會輸出平均值,阿斯克希望**平均值**。它只會輸出每個房間的預訂總數 –