我有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
謝謝。
我有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
謝謝。
下面是答案:
修訂
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
謝謝,我已更新我的問題以避免誤解。你能否更新你的答案?這將是一個好的。 – user3504260
嗨,@ user3504260。我應該更新哪些答案?跟你想要的不一樣嗎? (除了'%'符號和十進制小數百分比,小數點後兩位) –
您可以做的字段名稱修改。不需要重新創建小提琴。 –
嘗試使用此:
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
它不會輸出平均值,阿斯克希望**平均值**。它只會輸出每個房間的預訂總數 –
您需要更具體的關於你」已經完成了,你掛了。您如何爲特定房間預訂房間?在'bookingings.roomId'和'rooms.id'上加上'INNER JOIN'?或者以其他方式?你是否想要一種直接從sql查詢中獲得這種結果的方法,或者在應用程序層中執行此操作可以嗎? –