【问题标题】:how to make a query in SQL from the result of another avg(query)如何根据另一个 avg(query) 的结果在 SQL 中进行查询
【发布时间】:2021-02-23 20:07:58
【问题描述】:

我想知道是否有人可以帮助解决这个问题,我是 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 行的响应。??

感谢任何帮助。 非常感谢

【问题讨论】:

  • 你能展示一些样本数据和你想要的结果吗?房间 ID 的平均值绝对没有意义..
  • 更新您的问题,添加适当的数据样本和预期结果作为表格文本
  • 为什么要平均房间ID?这对我来说没有多大意义。
  • 欢迎来到 Stack Overflow。是的,数据样本和所需的输出会很好。我得到你想要的平均水平。因为你说你想要平均房间 ID,这可能不是你的意思。
  • 大家好,谢谢大家。对不起,我会尽量说得更清楚。我虚构的酒店共有 20 间客房。所以我有一张“预订”表,并且平均而言,round(avg(roomID)) 之类的东西会返回预订最多的房间,在这种情况下是房间 #10。现在,我所需要的只是 Room(#10) 的价格,而该数据(价格)位于另一个名为“Room”的表中,列 roomCost 的 int 值表示本例中每个房间的成本 40。一次我有一个平均最畅销/预订的房间,我需要提取其成本,最终返回如下内容:roomID 10 roomCost 40。

标签: sql average multiple-tables


【解决方案1】:

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

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,roomid, 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,guestid,roomid

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多