我有下一个问题: 纽约每家酒店最常预订的房型是什么?
表:
1. Hotel - city, hotelNo[primarykey]
2. Room - roomNo[primarykey], type, hotelNo[foreignkey]
3. Booking - roomNo[foreignkey], hotelNo[foreignkey]
所以,假设我在这个城市有3家酒店,我需要获得列表:--------
NumberOfBookings, MostBookedType, HotelName
有什么建议吗?提前谢谢!
这是我的代码:
SELECT type, r.hotelNo, r.roomNo
FROM room r
INNER JOIN booking b ON r.roomNo=b.roomNo
WHERE r.hotelNo = ANY
(
SELECT hotelNo
FROM hotel
WHERE city = "New York"
)
它显示了纽约酒店的房间类型,酒店和房间的预订。
我需要了解如何创建一个显示类型的表(主要是预订的),numberOfBookings(预订类型最多),hotelNo(房间类型)
答案 0 :(得分:2)
select
hotel.city HotelName,
room.type BookedType,
count(*) NumberOfBookings
from
Booking B
join Hotel
on B.HotelNo = Hotel.HotelNo
join Room
on B.HotelNo = Room.HotelNo
AND B.RoomNo = room.RoomNo
group by
B.HotelNo,
room.Type
order by
count(*) desc
现在,这个例程可以从Hotel A首先拉出大床,从Hotel X第二张双人床和第三张酒店的双人床,以及从酒店A出来的King ...因为看起来你特别希望每家酒店和类型房间......
我会确保您在预订表上有一个基于(HotelNo,RoomNo)的索引,以帮助优化该组...