-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 に答える