如何根据另一个 avg(query) 的结果在 SQL 中进行查询

问题描述

我想知道是否有人可以帮忙解决这个问题,我是 sql 新手,我正在尝试这样做。

我有以下 3 个表/列

Bookings(roomID,bookingID,guestID) 
Room(rooCost,roomID) 
Guests(name,lname ext)

我想我们可以让 Guest 表单独完成这项任务。 所以本质上,我需要从不同的表/列组合中提取 avg(roomID) 以及这个特定房间的成本。

请原谅我下面的伪代码:)

现在,我想知道

    avg room(Booking.roomID) rented by all guests and its related cost(Room.roomCost)

所以我猜是这样的:

query the avg(booking.roomID) (btw this would give me an int 10)
then
query the cost of room(10) from Room.roomCost

我尝试了这么多组合!简直难以置信!!一旦我快到了,我想,但我从一个 20 行的表格中得到了 +400 行的响应。??

感谢任何帮助。 非常感谢

解决方法

如果您想获得房间明智的平均成本,您可以使用以下查询:

select roomid,avg(roocost) from room
group by roomid

如果您想获得任何客人租用的房间的平均值,请使用以下查询:

select roomid,avg(roocost) from room
where roomid in (select roomid from bookings)
group by roomid

计算客房平均成本:

   select guestid,roomid,avg(roocost) from room r inner join booking b
   on r.roomid=b.roomid
   group by guestid,roomid

计算客人明智的房间平均成本(带客人姓名):

   select name guestname,guestid,avg(roocost) from room r inner join booking b
   on r.roomid=b.roomid
   inner join guests g on g.guestid=b.guestid 
   group by name,roomid