-3

我有这个酒店、房间、预订和客人的数据库我需要只获得平均价格高于所有酒店中所有房间的平均价格的酒店的平均价格。这是我的数据的样子

Hotel (hotelNo,hotelName,hotelAddress)
Room (hotelNo,roomNo,type,price)
Guest (guestNo,guestName,guestAddress)
Booking (hotelNo,guestNo,dateFrom,dateTo,roomNo)

这是我的查询

 SELECT (
  SELECT hotelName
  from hotel
  where hotel.hotelNo = room.hotelNo
 ) AS "Hotel Name",
 AVG(price) t
 FROM room 
 where t<(SELECT AVG(price)from room)
  Group by hotelNo
4

2 回答 2

1

尝试类似:

select hotelName
from hotel
where hotelNo in ( 
  select hotelNo 
  from Room
  group by hotelNo
  having avg( price ) > select avg( price ) from Room 
)
于 2013-11-04T07:02:27.070 回答
0

使用 TDQD(测试驱动的查询设计)构建您的查询。

每家酒店的平均客房费用

SELECT HotelNo, AVG(Price) AS AvgPrice
  FROM Room
 GROUP BY HotelNo;

所有酒店的平均客房费用

SELECT AVG(Price) AS AvgPrice
  FROM Room;

一个房间的平均成本高于一个房间的整体平均成本的酒店

SELECT HotelNo
  FROM Room
 GROUP BY HotelNo
HAVING AVG(Price) > (SELECT AVG(Price) FROM Room)

酒店详情...

SELECT HotelNo, HotelName, HotelAddress
  FROM Hotel AS H
  JOIN (SELECT HotelNo
          FROM Room
         GROUP BY HotelNo
        HAVING AVG(Price) > (SELECT AVG(Price) FROM Room)
       ) AS E
    ON H.HotelNo = E.HotelNo

还有其他编写最后一个查询的方法。

它是 TDQD,因为您可以测试每个阶段以确保获得预期的结果,从而建立对最终复杂查询正确的信心。如果出现问题,如果您已逐步开发查询,那么您将无法撤消。

于 2013-11-04T07:05:17.413 回答