【发布时间】:2016-08-17 16:44:37
【问题描述】:
这是我的表定义:
表___房间:
|--------|-----------|--------|----------|
|ROO_Id |ROO_HotelId|ROO_Name|ROO_Number|
|--------|-----------|--------|----------|
| 1|AAA00 |Room 12 | 12|
| 2|AAA00 |Room 14 | 14|
| 3|AAA00 |Room 16 | 16|
| 4|ZZZ99 |Room 11 | 11|
| 5|ZZZ99 |Room 22 | 22|
| 6|ZZZ99 |Room 33 | 33|
|--------|-----------|--------|----------|
表___预订:
|--------|-----------|----------|
|BOO_Id |BOO_HotelId|BOO_RoomId|
|--------|-----------|----------|
| 1|AAA00 | 1|
| 2|AAA00 | 1|
| 3|AAA00 | 3|
| 4|ZZZ99 | 5|
| 5|ZZZ99 | 5|
| 6|ZZZ99 | 5|
|--------|-----------|----------|
其实我有:
-
AAA00的预订数量 = 3 -
AAA00的房间数 = 3
我想仅列出 AAA00 属性的房间,并按预订数量中最受欢迎的房间对其进行排名。
所以我使用这个查询:
SELECT r.ROO_Number BOO_RoomId,
( ( ifnull(cnt_book,0)*100)/(SELECT count(*) FROM ___Bookings)) percentage,
ifnull(cnt_book,0) `count`
FROM ___Rooms r
LEFT JOIN (
SELECT BOO_RoomId, count(*) cnt_book
FROM ___Bookings
WHERE BOO_HotelId='AAA00'
GROUP BY BOO_RoomId
) cnt ON r.ROO_Id=cnt.BOO_RoomId
ORDER BY percentage DESC
这个查询的预期结果是:
-
1 - 房间 2 - 2 次预订 - 66.66%
-
2 - 房间 3 - 1 次预订 - 33.33%
-
3 - 房间 2 - 0 预订 - 00.00$
但它会将所有房间都归还给我。
你能帮我解决这个问题吗?
谢谢。
【问题讨论】: