Mysql 计算损失的月收入

Mysql 计算损失的月收入,mysql,sql,Mysql,Sql,我有三张桌子: Hotel {hotelID, hotelName, city} Room {hotelID, roomNo, price, type} Booking {hotelID, roomNo, startDate, endDate} 我想找到当月的损失收入(即,计算当月每天的损失收入,然后计算总数) 我该怎么做呢 快速编辑:只需查找hotelName='Radisson'的收入即可。应该可以: SELECT COALESCE(SUM(r.price), 0) FROM R

我有三张桌子:

Hotel {hotelID, hotelName, city}
Room {hotelID, roomNo, price, type}
Booking {hotelID, roomNo, startDate, endDate}
我想找到当月的损失收入(即,计算当月每天的损失收入,然后计算总数)

我该怎么做呢

快速编辑:只需查找hotelName='Radisson'的收入即可。

应该可以:

SELECT COALESCE(SUM(r.price), 0) 
    FROM Room AS r INNER JOIN Booking AS b ON r.hotelID = b.hotelID AND r.roomNo = b.roomNo 
    INNER JOIN Hotel AS h ON r.hotelID = h.hotelID 
    WHERE (month(b.startDate) > month(current_date()) OR month(b.endDate) < month(current_date()))
    AND h.hotelName = 'Radisson';
选择合并(总和(r.price),0)
从房间为r内部加入预订为b在r.hotelID=b.hotelID和r.roomNo=b.roomNo上
内联酒店作为h ON r.hotelID=h.hotelID
其中(月(b.开始日期)>月(当前日期())或月(b.结束日期)<月(当前日期())
h.hotelName='Radisson';

这是查询的开始。你们懒得把数据放出来,所以我懒得去查询mysql的形式

在查看每间客房的数据后,如果您愿意,您可以合并为一笔金额。这就是编写查询以确保每个步骤都正确的方法

select
  ht.hotelid
  ,ht.hotelname
  ,ht.city
  ,rm.roomno
  ,rm.price
  ,rm.type
  ,30 as days -- use your datediff function for month instead of literal 30
  ,30 * rm.price as potential -- use your datediff function instead of literal 30
  ,sum(datediff(day, startdate, enddate)) * rm.price as earned
  --, potential - earned as lost (use the 2 prior columns to calc)      
from hotel ht
join room rm on ht.hotelid = rm.hotelid
left join booking bk on bk.hotelid = rm.hotelid 
   and bk.roomno =bk.roomno

“收入损失”是否意味着“如果所有预订的房间都被预订了,你本可以获得的金额”?你试过什么?如果你给出一些数据/结果的例子,那会更容易得到帮助。你试过什么?如前所述,发布一些测试数据。您可以使用提供所有这些信息。所有人都直接在这里发布一个包含示例数据的创建脚本。请解释更多关于本月收入损失的信息。提示:我们不会为您编写代码。提示2:提供代码。。。Hint3:如果出现SQL问题,请使用并正确设置它